// тут действия в экшене
$this->render('someView',array(
'oNews' => (new Model_News())->findLast(10);
)
);
//а во вью как дальше описал ты
Т.е. viewHelper'ы?те вью, которые могут быть использованы множеством разных экшенов, и чтобы в каждом из экшенов не писать в рендеренге одни и те же параметры
Так я и пытаюсь разобраться о чём речь. То что вы с AmdY описали очень напоминает то, что в ZF называется viewHelper и при этом view ни чуть не выходит за рамки "Пассивный вью это нечто что не имеет ни какой логики кроме if, whilte, for. Вся дата в него приходит из вне (контроллер)." Только кое-что может приходить не из контроллера а из хелпера, как-раз таки очень удобно в описываемых случаях.Sufir
только не вводи новые обозначения, а то все скатиться к тому, что один называет одно и то же так, другой по-другому, и не разберемся в итоге![]()
вот тут та и граница между активным и пассивнымТолько кое-что может приходить не из контроллера а из хелпера, как-раз таки очень удобно в описываемых случаях.
class ViewHeler {
public static function urlFor($name, $uname, array $params = array()){
return '<a href="' . Router::instance()->urlFor($uname, $params) . '">' . $name . '</a>';
}
}
class ViewHeler {
public static function getShoppingCart($forUserId){
$cart = Model::factory('ShoppingCart')->getFor($forUserId);
$html = '<ul>';
foreach($cart->items as $item)
$html .= '<li>' . $item . '</li>';
$html .= '</ul>';
return $html;
}
}
Sufir
приведи пример пожалуйста своего ZF кода с viewHelper.
class Zend_View_Helper_AuthForm extends Zend_View_Helper_Abstract {
public function authForm( /*Sfr_Form_Auth*/ $form )
{
$html = '';
$auth = Zend_Auth::getInstance();
if ( Zend_Registry::isRegistered( 'user' ) ) {
$User = Zend_Registry::get( 'user' );
}
if ( isset($User) ){ // Если в реестре есть user - значит отображаем аватар
$html .= '<div id="user"><a href="/user"><img id="main-avatar" src="' . $User->getAvatar( 'l' ) . '" title="'
. $User->name . ' ' . $User->family
. '"></a></div>';
} else { // иначе форму
$html .= $form;
}
return $html;
}
}
// В layout, чтоб был на всех страницах, так же можно использовать в отдельных view
<aside id="sideLeft">
<?php echo $this->authForm( $this->authForm ) ?> // форма или аватар
<nav>
<?php echo $this->navigation()->menu( $this->mainMenu() )->setUlClass( 'main-menu' ); ?> // главное меню
</nav>
</aside>
$this->authForm
} else { // иначе форму
$html .= $form;
}
http://martinfowler.com/eaaDev/PassiveScreen.htmlA Passive View handles this by reducing the behavior of the UI components to the absolute minimum by using a controller that not just handles responses to user events, but also does all the updating of the view. This allows testing to be focused on the controller with little risk of problems in the view.
Не, я ничего не утверждаю. Я изучаю. Так это активный?Sufir
Ты хочешь сказать что это пассивный вью? По моему это как раз активный.
2 step view, layout, master page и т.д.Мда ты прав, забыл про это. В Зенде вроде так, называется two step view вроде..
$this->url('home') для статичных адресов, $item->permalink() для объектов.При пассивном вью, что я передаю в него? весь обьект раутера? только нужный url?
Унаследовать другой шаблон, в котором есть хедер и футер.И да еше вопрос, как сделать layout на пассивных шаблонах уж не хочется в каждом акшене писать:
Так вот я тоже не знаю, выходит что да. Кроме меня ни кто так и не дал определения активному и пассивномуНе, я ничего не утверждаю. Я изучаю. Так это активный?
Что есть $this в данном контексте? view?$this->url('home') для статичных адресов, $item->permalink() для объектов.
<a href="<?=$user->permalink()?>">Vasya Pupkin's Profile</a>
Ты подразумеваешь template engine? ибо как наследовать шаблоны в php я не знаю.Унаследовать другой шаблон, в котором есть хедер и футер.
Тут мне дали другое определение чем то, которое я читал в книгах.Кроме меня ни кто так и не дал определения активному и пассивному
В вебе MVC кончается на разделении на templates, models, controllers. На десктопных оконных приложениях вид может менять свой отображение, что по сути делает его активным. В пассивных же вид не делает вообще ничего, если произошло событие click, то новый скрин отрисуется только когда выполнится контроллер . И делают это для облегчения тестирования. (это то, что написано у Фаулера). Иначе сложно протестировать появилось ли окно, после нажатия на кнопку "Открыть файл" или нет.. Кроме меня ни кто так и не дал определения активному и пассивному
Толстых и тонких? %)давайте теперь об активных и пассивных контроллерах %)
Да. Ну или {% url 'home' %} - смотря что у тебя там с шаблонизацией.Что есть $this в данном контексте? view?
Так и есть.А вот про линк для объектов, разви передовать сам объект и уже во вью писать будет неправильно?
{% for user in users %}
<a href="{{ user.permalink }}">{{ user.name }}</a><br />
{% endfor %}
Как хочешь. Можешь pure php использовать - в ZF подсмотри, как блоки определяются.Ты подразумеваешь template engine? ибо как наследовать шаблоны в php я не знаю.