Используя ajax helper, созданный для использования с Jquery, я создал форму, которая публикует комментарии в «/ comments / add», и это работает, как и ожидалось, на моем локальном wamp-сервере, но не на моем рабочем сервере.На моем производственном сервере я получаю сообщение об ошибке 404, не могу найти /comments/add'.
Я потратил довольно много времени на поиск разрешения, но безуспешно.Я сосредоточился на том, чтобы попытаться выявить разрыв, но ничего не выскакивает у меня.
Вот некоторые наблюдения:
- работает, как и ожидалось, на локальном сервере Wamp.
- requestHandler указан как компонент
- файлы на локальном и производственном серверах одинаковы
- папка контроллеров имеет доступ к записи
- autoLayout и autoRender установленыв false
Вот форма, на мой взгляд:
<div class="comments form">
<?php echo $ajax->form('/comments/add', 'tournament', array('url' => '/comments/add', 'update' => 'Comments', 'indicator' => 'commentSaved'));?>
<fieldset>
<legend><?php __('Add Comment');?></legend>
<div id="commentSaved" style="display: none; float: right;">
<h2>Loading...</h2>
</div>
<?php
echo $form->hidden('Comment.foreign_id', array('value' => $tournament['Tournament']['id']));
echo $form->hidden('Comment.belongs_to', array('value' => 'Tournament'));
echo $form->input('Comment.name');
echo $form->input('Comment.email');
echo $form->input('Comment.web', array('value' => 'http://'));
echo $form->input('Comment.content');
?>
</fieldset>
<?php echo $form->end('Submit');?>
</div>
А вот контроллер моего комментария добавить действие:
function add() {
if($this->RequestHandler->isAjax())
{
$this->autoLayout = false;
$this->autoRender=false;
$this->Comment->recursive =-1;
$commentInfos = $this->Comment->findAllByIp($_SERVER['REMOTE_ADDR']);
$spam = FALSE;
foreach($commentInfos as $commentInfo)
{
if ( time() - strtotime($commentInfo['Comment']['created']) < 180)
{
$spam = TRUE;
}
}
if ($spam === FALSE)
{
if (!empty($this->data)) {
$this->data['Comment']['ip'] = $_SERVER['REMOTE_ADDR'];
$this->Comment->create();
if ($this->Comment->save($this->data)) {
$this->Comment->recursive =-1;
$comments = $this->Comment->findAll(array('Comment.foreign_id' => $this->data['Comment']['foreign_id'], 'Comment.belongs_to' => $this->data['Comment']['belongs_to'], 'Comment.status' =>'approved'));
$this->set(compact('comments'));
$this->viewPath = 'elements'.DS.'posts';
$this->render('comments');
}
}
}
else
{
$this->Comment->recursive =-1;
$comments = $this->Comment->findAll(array('Comment.foreign_id' => $this->data['Comment']['foreign_id'], 'Comment.belongs_to' => $this->data['Comment']['belongs_to'], 'Comment.status' =>'approved'));
$this->set(compact('comments'));
$this->viewPath = 'elements'.DS.'posts';
$this->render('spam');
}
}
else
{
$this->Session->setFlash(__('Invalid Action. Please view a post to add a comment.', true));
$this->redirect(array('controller' => 'pages', 'action'=>'display', 'home'));
}
}
Как вы можетевидите, я удостоверился, что 'autoLayout' и 'autoRender' установлены в false, но в Firebug я все еще получаю ошибку 404, заявляющую, что на рабочем сервере не найдено / comments / add.
Я должен такжеУкажите, что я использую jquery, jquery.form и jquery.editable, а также помощник ajax, созданный для использования с jquery.
Любая помощь или даже предложения о том, как устранить неполадку, действительно приветствуется.
Приветствия, Пол