[dev] [commits] [Wiki] changed: Doc/Dev/Horde_View
Jan Schneider
jan at horde.org
Wed Jan 21 09:54:23 UTC 2015
To who changed this: the original version was explicitly for using
Horde_View as an independent library. The changes you applied require
a Horde installation though, which is different. It's nice to see
those as an example too, but it should be added, not replacing the
current documentation.
Zitat von Wiki Guest <wikiguest at horde.org>:
> guest [178.26.86.13] Wed, 21 Jan 2015 09:14:22 +0000
>
> Modified page: http://wiki.horde.org/Doc/Dev/Horde_View
> New Revision: 7
> Change log: Updated to Horde 5, fixed code bugs, added some description
>
> @@ -2,17 +2,20 @@
>
> + Horde_View
>
> Documentation on the Horde_View package. This documentation is
> adopted from the MAD documentation
> (http://framework.maintainable.com/mvc/5_view.php), as many of the
> Horde View ideas are also adopted from MAD, and the helpers are
> directly compatible between the two systems.
> +
> +The following explanations correspond to Horde 5.
>
> ++ Example usage
>
> **Calling code**
>
> <code type="php">
> <?php
>
> -require 'Horde/Autoloader.php';
> +require_once __DIR__ . '/lib/Application.php';
> +Horde_Registry::appInit('yourapp');
>
> // use a model to get the data for book authors and titles.
> $data = array(
> array(
> @@ -27,17 +30,22 @@
> 'author' => 'Milton Friedman',
> 'title' => 'Free to Choose'
> )
> );
> +
> +$view = new Horde_View (array('templatePath' => 'viewtest'));
>
> $view = new Horde_View;
> +$view->addHelper('Horde_View_Helper_Tag');
> $view->books = $data;
>
> // and render a template called "template.php"
> echo $view->render('template.php');
> </code>
>
> **View template**
> +
> +Put the following code into viewtest/template.php (the template
> path is set above):
>
> <code type="php">
> <?php if ($this->books): ?>
>
> @@ -49,10 +57,10 @@
> </tr>
>
> <?php foreach ($this->books as $key => $val): ?>
> <tr>
> -<td><?php echo $this->escape($val['author']) ?></td>
> -<td><?php echo $this->escape($val['title']) ?></td>
> + <td><?php echo $this->escape($val['author']) ?></td>
> + <td><?php echo $this->escape($val['title']) ?></td>
> </tr>
> <?php endforeach; ?>
>
> </table>
> @@ -61,8 +69,9 @@
> <p>There are no books to display.</p>
> <?php endif; ?>
>
> </code>
> +
>
> ++ Base functionality
>
> * assign indiv vars
> @@ -132,9 +141,8 @@
> * single-escaping to not re-escape entities
>
> +++ Text
>
> -* h() shorthand escape
> * truncate
> * truncate middle
> * highlight
> * cycle
> @@ -159,12 +167,18 @@
> Views separate the presentation from the controllers and models.
> Views are allowed to have logic, provided that the logic is only for
> presentation purposes. This presentation logic is small bits of PHP
> code embedded in the HTML.
>
> Bits of presentation logic code can be extracted into helper
> methods. Once extracted, a helper method can be called in the view
> in place of the former code block. Extracting presentation logic
> into helpers is a best practice and helps keep views clean and DRY.
>
> -Helpers are simply methods of a class. The framework mixes the
> helpers into the view behind the scenes, and makes them appear as
> methods inside the view. An example of a helper class with a single
> {{highlight()}} helper follows:
> +Helpers are simply methods of a class. The framework mixes the
> helpers into the view behind the scenes, and makes them appear as
> methods inside the view. An example of a helper class with a single
> {{highlight()}} helper follows. For more detailed information, refer
> to
> http://dev.horde.org/api/FRAMEWORK_4/lib/View/package-View.Helper.html
> +
> ++++ Example
> +
> +In the above example template, a function of Horde_View_Helper_Tag
> is used. Functions can be overloaded and additional helpers can be
> defined. For instance, you might whish to highlight a certain name
> in your booklist. You could define a corresponding function and put
> it into your own helper class in file yourapp/lib/Helper.php:
>
> <code type="php">
> -class UsersHelper extends ApplicationHelper
> +
> +<?php
> +class Yourapp_Helper extends Horde_View_Helper_Base
> {
> /**
> * Highlight a phrase within the given text
> * @param string $text
> @@ -172,22 +186,29 @@
> * @return string
> */
> public function highlight($text, $phrase)
> {
> - $escaped = $this->h($text);
> - $highlighter = '<strong class="highlight">$escaped</strong>';
> -
> + $escaped = $this->escape($phrase);
> + $highlighter = '<strong class="highlight">' . $phrase . '</strong>';
> +
> if (empty($phrase) || empty($text)) {
> return $text;
> }
> - return preg_replace("/($phrase)/", $highlighter, $text);
> + return preg_replace("/($phrase)/", $highlighter, $text);
> }
> }
> </code>
>
> -And in the HTML template:
> +
> +To use this helper, it helper must be added to the view you are
> using (w/ref. to above view.php):
> +<code>
> +$view->addHelper('Yourapp_Helper');
> +</code>
> +
> +And in template.php:
> <code>
> -<div><?= $this->highlight($this->var, 'bob') ?><div>
> +...
> + <td><?php echo $this->highlight($val['author'], 'Soto') ?></td>
> ...
> </code>
>
> It is OK to put HTML into helper class methods because they exist
> to assist with presentation. However, it is NOT OK to put print/echo
> statements within a helper class. Helper methods always return a
> value that is displayed in the view like {{<?=
> $this->highlight($text) ?>}}.
>
> --
> commits mailing list
> Frequently Asked Questions: http://wiki.horde.org/FAQ
> To unsubscribe, mail: commits-unsubscribe at lists.horde.org
--
Jan Schneider
The Horde Project
http://www.horde.org/
https://www.facebook.com/hordeproject
More information about the dev
mailing list