大家帮忙参考一下,管理后台用frameset好还是layout好?

在layout2的情况下。这样的需求:在actionAdmin里发现$_GET('parentId')没有传过来,也无法给它个初始值。需要他在sideBar里选择一项传递parentId才行。这时我想在content里面给他个提示,在左边选择节点。要问的问题在这里:如果我调用的是某个统一的提示action,怎么调用?也就是说跨controller调用action,又要保持一样的布局。

理论上你可以调用Yii::app()->run('ControllerID/ActionID')

实践中最好是redirect到这个action。

如果使用redirect的话会丢失,porlet和layout值。莫非把他们一并传递过去。好像这个做法也不错。

你也可以考虑定义一个公用的error view。

我把 'portlets'=>$this->portlets 传递过去,系统报错 说数组不能传递,是不是要重新组合一下数组?

Quote

理论上你可以调用Yii::app()->run('ControllerID/ActionID')

实践中最好是redirect到这个action。

qiang, 你的这个建议让我想到一个问题,如果我没理解错,redirect 是重新发送一个request。

不知道现在Yii controoler里面有没有类似ZF里 forward的方法,就是在同一个request下在一个action 里调用另一个action.

你可以用CController::run()。

yii::app()->run 这个用不了,提示嵌套超过100

CController::run可以用,但只限于当前控制器里,如果跨控制器就不能用了

如果需要跨controller,可以考虑:Yii::app()->runController($route);

之前是学C++的,最近1个月才刚学习PHP,接触了Yii之后一发不可收拾。今天在动手做自己的测试时发现,在layouts的main.php想直接修改成传统的<frameset>格式,发现就在同目录下的文件都显示404无法找到文件,设置完整的URL之后可以正常显示。于是到论坛找答案,发现了这个帖子,更加令我激动。

首先,发现Yii可以不用frameset实现分列(虽然我个人还是觉得frameset很方便,主要用于后台,不涉及SEO)。


其次,更令我激动的是,发现qiang居然是会说中文,OMG~~~

真细心,收起来日后回头看!

这个比较好玩 你不知道强 是中国人么 :lol: frameset还是别用了 也是快被废除的技术了而且经常引起session丢失 可以用iframe替代 布局最好用layout

刚接触不久,说实话,我连html标签还没熟练。之前一直看E文的文档,还以为连中文版本都没有(我同事就因为这用thinkPHP去了)。研究layout几天之后终于有了一点点领悟,可以抛弃frameset了 :lol: