В соответствии с CakePHP API :
Параметры:
смешанный $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);
Оба достигают одного и того же.