CakePHP 关于同时使用 set() 和 Compact() 的说明。只能与compact()一起使用

发布于 2024-10-27 17:24:17 字数 419 浏览 0 评论 0原文

我知道compact()是一个标准的php函数。而 set() 是蛋糕专用的方法。

我正在运行一个简单的测试,将值传递到使用 ajax 生成的视图(控制器中的用户 render()),并且如果我的设置如下,它只会将值从控制器传递到视图:

$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');

I know compact() is a standard php function. And set() is a cake-specific method.

I am running a simple test of passing a value to a view generated with ajax (user render() in my controller), and it only passes the value from the controller to the view if my setup is like so:

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

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

From reading the manual, it appears set() should work along w/out compact.

Can anyone explain why set() will not work alone? Like

$this->set('variable_name_to_pass');

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

情绪少女 2024-11-03 17:24:17

根据 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')

因此,当您将 compactset 结合使用时,您正在使用 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);

两者实现相同的目的。

According to the 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.

The compact function returns an associative array, built by taking the names specified in the input array, using them as keys, and taking the values of the variables referenced by those names and making those the values. For example:

$fred = 'Fred Flinstone';
$barney = 'Barney Rubble';
$names = compact('fred', 'barney');

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

So when you use compact in conjunction with set, you're using the single parameter form of the set function, by passing it an associative array of key-value pairs.

If you just have one variable you want to set on the view, and you want to use the single parameter form, you must invoke set in the same way:

$variable_to_pass = 'Fred';
$this->set(compact('variable_to_pass'));

Otherwise, the two parameter form of set can be used:

$variable_to_pass = 'Fred';
$this->set('variable_to_pass', $variable_to_pass);

Both achieve the same thing.

停滞 2024-11-03 17:24:17

紧凑返回一个数组。所以,显然 set 正在检查它的参数以及它是否是一个数组。它知道它来自compact。如果不是,它需要另一个参数,即变量的值。

Compact returns an array. So, apparently set is checking it's parameters and if it's an array. It knows that it's from compact. If not it expects another parameter, the value of variable.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文