Как включить несколько действий и контроллеров в Zend Framework 2

Я хотел бы включить несколько представлений в представление в ZF2. Я прочитал эту ссылку: http://framework.zend.com/manual/current/en/modules/zend.view.quick-start.html

но существует проблема. Таким образом, я должен передать значения, которые находятся в представлении, например:

$secondView = new ViewModel (array('var1' => $var1 ......));

В этом режиме контроллер и второе действие игнорируются. Есть ли способ включить представление, не минуя их? Я хотел бы, чтобы переменные передавались из второго контроллера действий, например, оператор include php


person Alessandro Corradini    schedule 10.03.2015    source источник


Ответы (2)


Если я правильно понял ваш вопрос, я думаю, что то, о чем вы спрашиваете, невозможно.

Мое предложение состояло бы в том, чтобы переместить поиск данных, необходимых для второго представления, в другое место, подальше от контроллера, и вызвать его как со второго контроллера, так и сформировать первый контроллер для передачи их второму представлению.

Если вы действительно хотите продолжить свой подход, единственная возможность, которую я вижу, - это использовать вызовы javascript и ajax для получения частичных данных, которые вам нужны в вашем представлении.

person marcosh    schedule 10.03.2015
comment
Я также думал включить другие части с помощью AJAX. Я только что попытался это сделать и отлично работает, но я хотел бы сделать это на чистом php. - person Alessandro Corradini; 10.03.2015
comment
@AlessandroCorradini просматривает документацию, возможно, вы могли бы попытаться изучить это: framework.zend.com/manual/current/en/modules/ - person marcosh; 10.03.2015

Вы можете использовать частичные для этого.

В вашем module.config.php под ключом «view_manager» вы определяете карту шаблона для своего частичного:

'view_manager' => array(
    'template_map' => array(
        'myPartial'   => __DIR__ . '/../view/mymodule/partial/myPartial.phtml',
    ),
    'template_path_stack' => array(
        __DIR__ . '/../view',
    ),
),

Затем в контейнере представления вы можете использовать этот фрагмент с помощью помощника представления partial():

<div><?php echo $this->partial('myPartial', array('var1' => 'value1'); ?></div>

Вы также можете передавать переменные в свой частичный файл. На эти переменные ссылаются в вашем частичном, как и на любую другую переменную представления:

echo $var1;
person itrascastro    schedule 10.03.2015
comment
Использование партиалов аналогично. Просто я хочу отображать несколько представлений, но не хочу передавать другие переменные, такие как метод включения в php. Значения переменных должны обеспечивать включенное действие. - person Alessandro Corradini; 10.03.2015
comment
Я не понимаю тебя. Вы хотите иметь переменные в родительском представлении, а также хотите, чтобы эти переменные были доступны в дочерних представлениях? - person itrascastro; 10.03.2015
comment
Обычно переменные представления передаются его действием, хорошо? Если я использую '$newView = new ViewModel(); $newView-›setTemplate('otherModule/otherController/otherAction')' внутри другого действия, я должен передать переменные относительно нового представления. Действие относительно другого представления не передает автоматически его переменные. - person Alessandro Corradini; 10.03.2015
comment
Это нормальное поведение. Вы только повторно используете шаблон. Если вам нужно сгенерировать переменные для второго действия, возможно, вам нужен форвард. - person itrascastro; 10.03.2015