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

Бих искал да включа множество изгледи в изглед в ZF2. Прочетох тази връзка: http://framework.zend.com/manual/current/en/modules/zend.view.quick-start.html

но има проблем. По този начин трябва да предам стойностите, които са в изглед, като този:

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

В този режим контролерът и второто действие са прескочени. Има ли начин да включите изглед, без да ги заобикаляте? Бих искал променливите да се предават от втория контролер на действие, като php израз за включване


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


Отговори (2)


Ако съм разбрал правилно въпроса ви, мисля, че това, което питате, не е възможно.

Моето предложение би било да преместите извличането на данните, от които се нуждаете за secondView, някъде другаде, далеч от контролера, и да го извикате както от втория контролер, така и да формирате първия контролер, за да ги прехвърлите на secondView.

Ако наистина искате да продължите с вашия подход, единствената възможност, която виждам, е да използвате извиквания на 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() View Helper:

<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