我的帖子有正文,在这个文本中我把短代码像[gallery = 2],现在我可以在我的文本中找到2个参数(图库和2)我想在我的视图中动态调用一个函数(图库)它正在调用一个元素(gallery id = 2):
应用程序/视图/帖/ index.ctp
findshortcode($posts[Post][Body]); // this function find short code and call his name like gallery(2)
//my problem is :
function gallery($id = null){
$this->element('gallery', array('galleryid' => $id), array('plugin' => 'gallerys'));
}
答案 0 :(得分:0)
你所拥有的东西并没有多大意义,而你所描述的方式并不是Cakish或MVC的做事方式。但我认为我得到了你的问题并会向你解释你想要的方式。
你需要做的是......从控制器内部做所有逻辑......然后将所有已完成的变量发送到视图中进行显示......
class PostsController extends AppController {
var $shortCodeTypes = array('gallery');
function view($id){
$post = $this->Post->find(null, $id);
$post = $this->_insertShortCodes($post);
$this->set(compact('post'));
}
function _insertShortCodes($post){
foreach($this->shortCodeTypes as $shortCodeType){
// Do logic to find shortcodes and insert data into post body
}
return $post
}