gpt4 book ai didi

model-view-controller - CakePHP 对一起使用 set() 和 compact() 的说明。仅适用于 compact()

转载 作者:行者123 更新时间:2023-12-03 15:08:51 28 4
gpt4 key购买 nike

我知道 compact() 是一个标准的 php 函数。而 set() 是一种特定于蛋糕的方法。

我正在运行一个简单的测试,将值传递给使用 ajax 生成的 View (我的 Controller 中的用户渲染()),如果我的设置如下,它只会将值从 Controller 传递给 View :

$variable_name_to_pass = "Passing to the view using set() can compact()";

$this->set(compact('variable_name_to_pass'));

通过阅读手册,似乎 set() 应该在没有紧凑的情况下工作。

谁能解释为什么 set() 不能单独工作?像
$this->set('variable_name_to_pass');

最佳答案

根据CakePHP API :

Parameters:

mixed $one required

A string or an array of data.

mixed $two optional NULL

Value in case $one is a string (which then works as the key). Unused if $one is an associative array, otherwise serves as the values to $one's keys.


compact函数返回一个关联数组,通过获取输入数组中指定的名称,将它们用作键,并获取这些名称引用的变量的值并将这些值作为值来构建。例如:
$fred = 'Fred Flinstone';
$barney = 'Barney Rubble';
$names = compact('fred', 'barney');

// $names == array('fred' => 'Fred Flinstone', 'barney' => 'Barney Rubble')

所以当你使用 compact结合 set ,您正在使用 set 的单参数形式函数,通过传递一个 关联数组 的键值对。

如果您只想在 View 上设置一个变量,并且想要使用单参数形式,则必须调用 set以同样的方式:
$variable_to_pass = 'Fred';
$this->set(compact('variable_to_pass'));

否则, set 的二参数形式可以使用:
$variable_to_pass = 'Fred';
$this->set('variable_to_pass', $variable_to_pass);

两者都实现了相同的目标。

关于model-view-controller - CakePHP 对一起使用 set() 和 compact() 的说明。仅适用于 compact(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5477696/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com