2016-02-02 13 views
1

Мы используем Zend Framework 1.12 и в нескольких действий, которые мы имеем:Zend Framework: получить POST параметры

$postParams = $this->getAllParams(); 
... 
$domainModel->update($postParams) 

мне было интересно, если это хороший подход к обработке Params. Или лучше, чтобы определить, какие параметры мы хотим получить как:

$postParams = array(
    'email' => $this->_getParam('email'), 
    'company' => $this->_getParam('company') 
) 

Или, возможно, использовать массив функции пересечения отфильтровать неожиданные параметры?

ответ

0

Лучшие практики следует использовать

$postParams = array(
    'email' => $this->_getParam('email'), 
    'company' => $this->_getParam('company') 
); 

Использование массива перекрестку может работать (для проверки ключей не значения, конечно!)

Почему проходит все Params до $ domainModel-> обновить не так хорошо ?

Зависит от логики обновления, но при условии, что параметры попадают в запрос базы данных, манипулируя HTTP-запросом, я могу вставить дополнительный код или параметры в запрос db - возможно, обновите поле, которое вы не хотите обновлять этим конкретным действием.

Недостатком этого подхода является то, что при изменении модели вы должны проверить свой код для этих параметров.

0

Если все столбцы таблицы (включая идентификаторы) можно изменить, вы можете использовать getAllParams. Кроме одной проблемы: POST может содержать переменные, которые не являются столбцами таблицы, поэтому вы получите сообщение об ошибке при обновлении (столбец «...» не найден).

0

Неплохая идея передать все параметры сообщения непосредственно модели. Иногда вам может не потребоваться передать определенные значения модели.

Во-вторых, вы можете установить некоторые значения по умолчанию для данных в случае, если его не предусмотренных в этом случае вы можете сделать $this->_getParam('company', DEFAULT_VALUE)

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

Смежные вопросы