От новичка до гуру: Курсы программирования на CyberDuff

Использование нескольких модулей в одном представлении

Я разрабатываю веб-приложение с помощью Zend Framework 1.12, что является чем-то новым для меня, и я не уверен, как сделать то, что я хочу.

РЕДАКТИРОВАТЬ: когда я говорю о модуле, я имею в виду контроллер, извините за это, я все еще ошибаюсь в терминах...

На моей домашней странице модуль Индекс, я сделал то, что хотел сделать с ним, создал несколько действий и все такое, но я хотел бы добавить поисковую систему, которую я сделаю сам.

Проблема в том, что я хотел бы создать поисковую систему в виде отдельного модуля с именем, например, Search, но разместить SearchForm на домашней странице. При нажатии кнопки «Отправить» данные из формы будут отправлены в модуль поиска.

Я не совсем понимаю, как это сделать, не переходя в /search для доступа к моей форме и всем связанным с ней действиям.

Должен ли я использовать View Helper?

Кроме того, searchForm на первой странице будет чем-то вроде QuickSearch, а доступ к /search покажет более сложную форму для исследования.

Может ли кто-нибудь объяснить мне, как получить доступ к searchForm из модуля Index или перенаправить меня в ту часть документации, где говорится об этом? Мои исследования не увенчались успехом, и Google мне тоже не помогает.

РЕДАКТИРОВАТЬ: когда я говорю о модуле, я имею в виду контроллер, извините за это, я все еще ошибаюсь в терминах...

28.11.2012

  • Я бы пошел менее сложным путем, написал форму поиска в простом html и отправил ее контроллеру /search. В противном случае вам придется использовать вспомогательный вид. 28.11.2012
  • Итак, если я понимаю, я должен поместить свою форму в помощник представления, и в начале написать что-то вроде $this-›form-›setAction(mywebsite.com/search); ? 28.11.2012

Ответы:


1

Прежде всего, создайте форму поиска как viewHelper, затем вы сможете повторно использовать ее в нескольких представлениях. Атрибут действия во фрагменте формы установлен в searchModule/controller/action.

Кроме того, изучите документацию Zend о viewHelpers и Forms.

28.11.2012
  • Я понял, что совершил глупую ошибку и использовал термин «модуль», когда имел в виду «контроллер». Я думаю, ваше решение все еще работает (?) 28.11.2012
  • Да, просто сделайте это без соглашения о модулях. 28.11.2012
  • Хорошо, я сделаю это. Спасибо за помощь ! 28.11.2012

  • 2

    На самом деле я предпочитаю делать это как помощник действия< /em>, а затем просто используйте стандартный помощник представления заполнителя для представления формы поиска.

    позвольте мне продемонстрировать:

    фактический помощник действия просто инициирует форму и подготавливает ее к отображению. Я оставлю структуру формы вам.

    //the action helper
    //Just fill in the args for the form to be displayed
    class NameSpace_Controller_Action_Helper_Search extends Zend_Controller_Action_Helper_Abstract
    {
        public function direct($action, $label = null, $placeHolder = null)
        {
            $form = new Application_Form_Search();
            //set the action
            $form->setAction($action);
            //set the submit button text
            $form->search->setLabel($label);
            //set the hint text displayed in the form window
            $form->query->setAttribs(array('placeholder' => $placeHolder,
                'size' => 27,
            ));
    
            return $form;
        }
    }
    

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

    //to use the helper in your controller
    class IndexController extends Zend_Controller_Action
    {
    
        public function preDispatch()
        {
            //setup action helper and assign it to a placeholder
            $this->_helper->layout()->search = $this->_helper->search(
                    '/index/display', 'Search Collection!', 'Title');
        }
    
    //in your view script
    <?php echo $this->layout()->search ?>
    

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

    Помните: Как и в любой html-форме, параметр действия — это просто URL-адрес, поэтому любой допустимый URL-адрес может быть назначен действию формы. В этом примере я использовал параметры /controller/action, но есть много других способов передать URL в форму. Помощник URL приходит на ум как хороший способ сделать это.

    url($urlOptions, $name, $reset, $encode): создает строку URL на основе именованного маршрута. $urlOptions должен быть ассоциативным массивом пар ключ/значение, используемых конкретным маршрутом.

    29.11.2012
    Новые материалы

    Основы Spring: Bean-компоненты, контейнер и внедрение зависимостей
    Как лего может помочь нашему пониманию Когда мы начинаем использовать Spring, нам бросают много терминов, и может быть трудно понять, что они все означают. Итак, мы разберем основы и будем..

    Отслеживание состояния с течением времени с дифференцированием снимков
    Время от времени что-то происходит и революционизирует часть моего рабочего процесса разработки. Что-то более забавное вместо типичного утомительного и утомительного процесса разработки. В..

    Я предполагаю, что вы имеете в виду методы обработки категориальных данных.
    Я предполагаю, что вы имеете в виду методы обработки категориальных данных. Пожалуйста, проверьте мой пост Инструментарий специалиста по данным для кодирования категориальных переменных в..

    Игра в прятки с данными
    Игра в прятки с данными Я хотел бы, чтобы вы сделали мне одолжение и ответили на следующие вопросы. Гуглить можно в любое время, здесь никто не забивается. Сколько регионов в Гане? А как..

    «Раскрытие математических рассуждений с помощью Microsoft MathPrompter и моделей больших языков»
    TL;DR: MathPrompter от Microsoft показывает, как использовать математические рассуждения с большими языковыми моделями; 4-этапный процесс для улучшения доверия и рассуждений в математических..

    Раскройте свой потенциал в области разработки мобильных приложений: Абсолютная бесплатная серия
    Глава 6: Работа в сети и выборка данных Глава 1: Введение в React Native Глава 2: Основы React Native Глава 3: Создание пользовательского интерфейса с помощью React Native Глава 4:..

    Все о кейсах: Camel, Snake, Kebab & Pascal
    В программировании вы сталкивались с ними при именовании переменной, класса или функции. Поддержание согласованности типов и стилей случаев делает ваш код более читабельным и облегчает совместную..


    © 2024 cyberbuff.ru, От новичка до гуру: Курсы программирования на CyberDuff