Ответ 1
Согласно API CakePHP:
Параметры:
смешанный
$one
требуетсяСтрока или массив данных.
смешанный
$two
необязательный NULLЗначение в случае, если
$one
является строкой (которая затем работает как ключ). Не используется, если$one
является ассоциативным массивом, в противном случае служит значением для ключей$one
.
compact
функция возвращает ассоциативный массив, построенный путем взятия имен, указанных во входном массиве, использования их в качестве ключей и взятия значений переменных, на которые ссылаются эти имена, и присвоения им этих значений. Например:
$fred = 'Fred Flinstone';
$barney = 'Barney Rubble';
$names = compact('fred', 'barney');
// $names == array('fred' => 'Fred Flinstone', 'barney' => 'Barney Rubble')
Поэтому, когда вы используете compact
вместе с set
, вы используете форму единственного параметра функции set
, передавая ей ассоциативный массив пар ключ-значение.
Если у вас есть только одна переменная, которую вы хотите установить в представлении, и вы хотите использовать форму с одним параметром, вы должны вызвать set
таким же образом:
$variable_to_pass = 'Fred';
$this->set(compact('variable_to_pass'));
В противном случае можно использовать двухпараметрическую форму set
:
$variable_to_pass = 'Fred';
$this->set('variable_to_pass', $variable_to_pass);
Оба достигают одного и того же.