Данные формы CakePHP, сеансы и повторное использование представления между двумя методами в одном контроллере - PullRequest
0 голосов
/ 02 июля 2010

Newbie php question

У меня есть текстовое поле, в котором пользователь что-то ищет и возвращается куча результатов (метод search () в контроллере), когда я нажимаю на ссылку, мне нужна дополнительная информациядля отображения (метод searchMore () в контроллере).

Вопросы

1) Как я могу вернуться на ту же страницу search.ctp вместо создания нового search_more.ctp?Использовать элементы или PHP включает?Использовать перенаправления?2) Как я могу сохранить введенные пользователем данные в текстовом поле, когда я возвращаюсь туда из searchMore ()?Есть ли в CakePHP какие-либо помощники для сессий и тому подобное?

Спасибо

Ответы [ 2 ]

1 голос
/ 02 июля 2010

Ваш вопрос выглядит как проблема pagination . Самое простое решение - разбить результаты поиска на две страницы, используя Paginator Helper , после чего вы можете легко переключать их друг на другаДругой подход - это Ajax-решение , которое разбивается на страницы как Twitter.

Обновление: (вам лучше сделать ответ в виде комментария.)

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

Для вопроса 1) ,это можно сделать с помощью functin render

    $this->render('search');

в вашем действии more_search.

Для вопроса 2) , вы можете передать пользователювводите данные в виде параметров между двумя действиями, или вы можете сохранить их в сеанс .

Но это выглядит немного странно. Насколько я вижу, лучшее решение - этоработать в одном действии, так как у вас есть то же состояние иВыходной формат AME. Затем будет работа о разбиении на страницы.

0 голосов
/ 02 июля 2010

Я часто занимаюсь такими вещами, как механизм вставки записей в PhpMyAdmin (начните снова с 25 записей).

В searchMore() используйте $this->render('search');. Это вернет вас к исходному виду. Передайте переменную как:

$this->set('searchMore',true); в вашем searchMore() методе.

В представлении используйте условное выражение (if($searchMore){...}), если требуется, для отображения альтернативного HTML в представлении, как требуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...