2016-12-01 5 views
0

Я создал класс для фильтрации списка всех назначений в своем расширении extbase - AppointmentFilter (Получил эту идею из учебника this с объектом спроса).Как сохранить значения объекта фильтра на протяжении всего сеанса

/** 
* action list 
* @param \Vendor\Extension\Domain\Model\AppointmentFilter $appointmentFilter 
* @return void 
*/ 
public function listAction($appointmentFilter = null) { 
    if ($appointmentFilter === null) { 
     $appointmentFilter = new \Vendor\Extension\Domain\Model\AppointmentFilter(); 
    } 
    $appointments = $this->appointmentRepository->findAppointmentsForList($appointmentFilter); 

    $this->view->assignMultiple(array(
     'appointments' => $appointments, 
     'appointmentFilter' => $appointmentFilter 
    )); 
} 

До сих пор она работает нормально, но есть проблема, когда я выбираю другое действие, как edit или new, потому что я всегда прохожу весь AppointmentFilter объект этих действий для того, чтобы сохранить свои ценности. Если я этого не сделаю и вернусь к list, мой контроллер снова создаст новый фильтр со значениями по умолчанию.
Теперь у меня много действий, поэтому очень сложно проходить вокруг этого фильтра все время.
Есть ли простой способ заставить его оставаться неизменным при входе в систему после того, как пользователь меняет его один раз, не передавая его во всех действиях или не создавая для него таблицу базы данных?
Если так - как?

+1

Возможно, вы можете сохранить эти настройки в сеансе? http://stackoverflow.com/questions/17440847/typo3-extbase-set-and-get-values-from-session –

+0

отлично, с решением этого ответа он работает :) –

ответ

0

Изучите руководство по адресу http://lbrmedia.net/codebase/Eintrag/extbase-backend-frontend-session-class/, где Марсель Брифс написал абстрактную реализацию SessionHandler, которая позволяет хранить и извлекать массивы в виде данных сеанса.

Затем, если какие-либо аргументы даны вашему фильтру, сохраните весь массив аргументов в качестве ключа или восстановите весь массив аргументов из данных сеанса, если они не указаны.

+0

В чем преимущество этой реализации вместо использования двух строк кода? - см. принятый ответ: http://stackoverflow.com/questions/17440847/typo3-extbase-set-and-get-values-from-session Является ли это возможностью использовать его и в Backend? –

+0

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