eme*_*his 9 php cakephp cakephp-2.0
我正试图弄清楚如何在控制器中使用我的一个视图元素......
我知道,我知道: "不要那样做!" (99%的时间这是正确的答案)
但我认为我其实有充分的理由.该操作正在处理返回标记的AJAX请求.返回的标记是一个列表,我在其他地方使用元素显示.因此,为了保持我的代码干,我认为这样做是合适的.
这可能吗?
Wes*_*óes 22
简单:
$view = new View($this, false);
$content = $view->element('my-element', $params);
Run Code Online (Sandbox Code Playgroud)
也:
不要做任何事!
有时,您需要从视图中呈现CakePhp元素,并使用AJAX将其内容同时注入到页面中.在这种情况下,渲染元素作为来自控制器的常规视图比创建仅包含的专用视图更好<?php echo $this->element('some_element') ?>,并且可以这样做:
<?php
public function ajax_action() {
// set data used in the element
$this->set('data', array('a'=>123, 'b'=>456, 'd'=>678));
// disable layout template
$this->layout = 'ajax';
// render!
$this->render('/Elements/some_element');
}
Run Code Online (Sandbox Code Playgroud)
我知道这是一个老问题,其他人已经给出了基本相同的答案,但我想指出这种方法(由Serge S.提供)......
<?php
public function ajax_action() {
// set data used in the element
$this->set('data', array('a'=>123, 'b'=>456, 'd'=>678));
// disable layout template
$this->layout = 'ajax';
// render!
$this->render('/Elements/some_element');
}
Run Code Online (Sandbox Code Playgroud)
...不是一个hacky解决方法,但实际上是CakePHP文档推荐的这种常见和合法用例的方法:
如果$ view以'/'开头,则假定它是相对于/ app/View文件夹的视图或元素文件.这允许直接渲染元素,在AJAX调用中非常有用.
(再次:感谢Serge S.的上述代码)
| 归档时间: |
|
| 查看次数: |
13477 次 |
| 最近记录: |