我只有一個控制器操作發生了一件非常奇怪的事情。這是一個視圖操作,按照預期爲其他類似控制器工作和路由,但不會路由一個特定的控制器操作。發生了什麼事是這樣的:cakePHP不會路由到默認佈局,並給出[MissingActionException]錯誤
我有一個'畫廊'控制器,當我選擇一個畫廊從索引行動來看,它會帶我到'視圖'行動,但不會顯示在默認佈局。索引操作將正確路由到並使用默認佈局,但視圖操作不會。
我也有一個職位控制器的設置完全相同,並沒有問題,所以我相信這是不是如何設置模型/控制器的畫廊控制器的問題。而且由於默認佈局適用於所有其他控制器,我不知道爲什麼它不適用於這一個?
在試圖解決這個問題時,我發現如果將其更改爲路由到'admin'佈局,則沒有問題。
在錯誤日誌中,這裏是我收到的消息。什麼是很難明白的是爲什麼默認佈局適用於所有其它控制器,但是這一個畫廊不起作用察看方法:
2013-11-27 15:06:21 Error: [MissingActionException] Action GalleriesController::js() could not be found.
#0 C:\wamp\www\DOMAIN-NAME-HERE\lib\Cake\Routing\Dispatcher.php(104): Controller->invokeAction(Object(CakeRequest))
#1 C:\wamp\www\DOMAIN-NAME-HERE\lib\Cake\Routing\Dispatcher.php(86): Dispatcher->_invoke(Object(GalleriesController), Object(CakeRequest), Object(CakeResponse))2013-11-27 15:06:21 Error: [MissingActionException] Action GalleriesController::css() could not be found.
#0 C:\wamp\www\DOMAIN-NAME-HERE\lib\Cake\Routing\Dispatcher.php(104): Controller->invokeAction(Object(CakeRequest))
#1 C:\wamp\www\DOMAIN-NAME-HERE\lib\Cake\Routing\Dispatcher.php(86): Dispatcher->_invoke(Object(GalleriesController), Object(CakeRequest), Object(CakeResponse))2013-11-27 15:06:21 Error: [MissingActionException] Action GalleriesController::img() could not be found.
#0 C:\wamp\www\DOMAIN-NAME-HERE\lib\Cake\Routing\Dispatcher.php(104): Controller->invokeAction(Object(CakeRequest))
#1 C:\wamp\www\DOMAIN-NAME-HERE\lib\Cake\Routing\Dispatcher.php(86): Dispatcher->_invoke(Object(GalleriesController), Object(CakeRequest), Object(CakeResponse))
我以前從未見過這種類型的錯誤消息,因爲我不要當任何其他控制器動作被調用時,它都不會得到它,這是一個謎。
這是何等的視圖方法:
public function show($slug=null) {
$this->layout='default';
if (!$slug) {
$this->Session->setFlash(__('Invalid gallery', true));
$this->redirect(array('action' => 'index'));
}
$this->set('gallery', $this->Gallery->findBySlug($slug));
}
這裏是什麼在default.thtml中佈局文件:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="">
<meta name="author" content="">
<link rel="shortcut icon" href="">
<title>WEBSITE TITLE</title>
<!-- Bootstrap core CSS -->
<!-- <link href="css/bootstrap.css" rel="stylesheet"> -->
<!-- Custom styles for this template -->
<link rel="stylesheet/less" href="less/bootstrap.less" media="all" />
<script src="js/less-1.4.1.min.js"></script>
<link href="css/sticky-footer-navbar.css" rel="stylesheet">
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<script src="../../assets/js/html5shiv.js"></script>
<script src="../../assets/js/respond.min.js"></script>
<![endif]-->
</head>
<body>
<!-- Wrap all page content here -->
<div id="wrap">
<!-- Begin page content -->
<div class="container">
<?php echo $this->element('headerMain'); ?>
<div class="row">
<div class="col-md-3">
<?php echo $this->element('leftNavBar'); ?>
</div><!-- col-md-4 -->
<?php echo $this->Session->flash(); ?>
<?php echo $this->Session->flash('auth'); ?>
<?php echo $content_for_layout; ?>
</div><!-- row -->
</div>
</div>
<?php echo $this->element('footerMain'); ?>
<script src="js/jquery.js"></script>
<script src="js/bootstrap.min.js"></script>
的視圖模板的代碼:
<div class="col-md-8">
<h2>Gallery photos</h2>
<br />
<ul>
<?php foreach ($gallery ['Photo'] as $photo): ?>
<li>
<?php
echo $this->Html->image(
$photo['imgPath'],
array('title' => $photo['alt_tag']),
array('escape' => false)
);
?>
</li>
<?php endforeach; ?>
</ul>
個
感謝,保羅
請粘貼此視圖的內容 –
Guillemo我已經添加了上面的佈局內容。謝謝 – Paul
保羅,我的意思是你打電話給你的動作視圖 –