当我使用带参数的控制器功能时,渲染视图似乎忘记了每个包含的.js文件。
public function view($id = null) {
if(!$id) {
throw new NotFoundException(__('Invalid post'));
}
$post = $this->Post->findById($id);
if(!$post) {
throw new NotFoundException(__('Invalid post'));
}
$this->set('post', $post);
}
如果我取走参数并在函数上放置变量'$ id = 1',则使用postID 1的视图在'posts / view'中呈现正常。
我以传统方式将javascript文件包含到default.ctp中:
echo "script type='text/javascript' SRC='../js/jquery-1.9.1.min.js'></script>";);
(它包括'&lt;'但是这个文本编辑器我不会因为安全原因而输入它我猜)
我对cakePHP的'js helpers'一无所知。我不能用传统方式使用javascript吗?
网站在其他所有视图中呈现正常(例如帖子/添加)和.js文件包含在'posts / view / 1'的源代码中
答案 0 :(得分:2)
您正在使用javascript的相对路径;
<script src='../js/jquery-1.9.1.min.js'></script>
在此网址中,../
表示“当前位置的1个目录”,因此当您正在访问此网址时
http://mysite.com/home/
然后您的浏览器将正确尝试加载脚本;
http://mysite.com/js/jquery-1.9.1.min.js
但是, 如果您正在访问此网址;
http://mysite.com/home/and/some/more/
然后浏览器会在这里查找JavaScript:
http://mysite.com/home/and/some/js/jquery-1.9.1.min.js
src='/js/jquery-1.9.1.min.js'
echo $this->Html->script('jquery-1.9.1.min');