cakephp: не удается найти страницу с поиском страницы http 404 - PullRequest
0 голосов
/ 12 января 2012

Когда я нажимаю на ссылку поиска в плагине форум кексов, введите критерии поиска и нажмите кнопку отправить, я получаю пустую страницу в Firefox, и веб-сайт http 404 не может быть найден в IE.

Понятия не имеюна что я делаю не так.Кто-нибудь может мне помочь?Спасибо.

вот что такое search_controller:

class SearchController extends ForumAppController {

/**
 * Controller Name
 * @access public
 * @var string
 */
public $name = 'Search';

/**
 * Models
 * @access public
 * @var array
 */
public $uses = array('Forum.Topic');

/**
 * Pagination 
 * @access public
 * @var array 
 */
public $paginate = array( 
    'Topic' => array(
        'order' => 'LastPost.created DESC',
        'contain' => array('ForumCategory.title', 'User.id', 'User.username', 'LastPost.created', 'LastUser.username', 'Poll.id', 'FirstPost.content')
    )
); 

/**
 * Search the topics
 * @access public
 * @param string $type
 */
public function index($type = '') {
    $searching = false;

    print_r($this->params['named']);

    // Build
    if (!empty($this->params['named'])) {
        foreach ($this->params['named'] as $field => $value) {
            $this->data['Topic'][$field] = urldecode($value);
        }
    }

    if ($type == 'new_posts') {
        $this->data['Topic']['orderBy'] = 'LastPost.created';
        $this->paginate['Topic']['conditions']['LastPost.created >='] = $this->Session->read('Forum.lastVisit');
    }
    echo '<br/>';
    print_r($this->data);
    // Search
    if (!empty($this->data)) {
        $searching = true;
        $this->paginate['Topic']['limit'] = $this->Toolbar->settings['topics_per_page'];

        if (!empty($this->data['Topic']['keywords'])) {
            if ($this->data['Topic']['power'] == 0) {
                $this->paginate['Topic']['conditions']['Topic.title LIKE'] = '%'. $this->data['Topic']['keywords'] .'%';
            } else {
                $this->paginate['Topic']['conditions']['OR'] = array(
                    array('Topic.title LIKE' => '%'. $this->data['Topic']['keywords'] .'%'),
                    array('FirstPost.content LIKE' => '%'. $this->data['Topic']['keywords'] .'%')
                );
            }
        }

        if (!empty($this->data['Topic']['category'])) {
            $this->paginate['Topic']['conditions']['Topic.forum_category_id'] = $this->data['Topic']['category'];
        }

        if (!empty($this->data['Topic']['orderBy'])) {
            $this->paginate['Topic']['order'] = $this->data['Topic']['orderBy'] .' DESC';
        }

        if (!empty($this->data['Topic']['byUser'])) {
            $this->paginate['Topic']['conditions']['User.username LIKE'] = '%'. $this->data['Topic']['byUser'] .'%';
        }

        $this->set('topics', $this->paginate('Topic'));
    }

    $this->Toolbar->pageTitle(__d('forum', 'Search', true));
    $this->set('menuTab', 'search');
    $this->set('searching', $searching);
    $this->set('forums', $this->Topic->ForumCategory->getHierarchy($this->Toolbar->getAccess(), $this->Session->read('Forum.access'), 'read'));
}

 }
 ?>

topic.php модель:

class Topic extends ForumAppModel {

/**
 * Belongs to
 * @access public
 * @var array
 */
public $belongsTo = array(
    'ForumCategory' => array(
        'className'     => 'Forum.ForumCategory',
        'counterCache'  => true
    ),
    'User' => array(
        'className'     => 'Forum.User'
    ),
    'FirstPost' => array(
        'className'     => 'Forum.Post',
        'foreignKey'    => 'firstPost_id'
    ),
    'LastPost' => array(
        'className'     => 'Forum.Post',
        'foreignKey'    => 'lastPost_id'
    ),
    'LastUser' => array(
        'className'     => 'Forum.User',
        'foreignKey'    => 'lastUser_id'
    )
);

/**
 * Has one
 * @access public
 * @var array
 */
public $hasOne = array(
    'Poll' => array(
        'className' => 'Forum.Poll',
        'dependent' => true
    )
);

/**
 * Has many
 * @access public
 * @var array
 */
public $hasMany = array(
    'Post' => array(
        'className' => 'Forum.Post',
        'exclusive' => true,
        'dependent' => true,
        'order'     => 'Post.created DESC',
    )
);

представление index.ctp:

<?php // Search orderbY

$orderBy = array(
    'LastPost.created' => __d('forum', 'Last post time', true),
    'Topic.created' => __d('forum', 'Topic created time', true),
    'Topic.post_count' => __d('forum', 'Total posts', true),
    'Topic.view_count' => __d('forum', 'Total views', true)
); ?>

<h2>Search</h2>

<?php echo $form->create('Topic', array('url' => array('controller' => 'search', 'action' => 'index'))); ?>
<div id="search">

    <?php 
    echo $form->input('keywords', array('div' => false, 'label' => false, 'style' => 'width: 300px'));
    echo $form->label('power', __d('forum', 'Power Search?', true));
    echo $form->input('category', array('div' => false, 'label' => false, 'options' => $forums, 'escape' => false, 'empty' => true));
    echo $form->input('orderBy', array('div' => false, 'label' => false, 'options' => $orderBy));
    echo $form->label('byUser', __d('forum', 'By User (Username)', true) .':');
    echo $form->input('byUser', array('div' => false, 'label' => false, 'style' => 'width: 150px'));
    ?>
</div>
<?php echo $form->end(__d('forum', 'Search Topics', true)); 
pr($this->validationErrors); 
?>

<?php // Is searching
if ($searching === true) { ?>

<div class="forumWrap">
    <?php echo $this->element('pagination'); ?>

    <table cellspacing="0" class="table">
    <tr>
        <th colspan="2"><?php echo $paginator->sort(__d('forum', 'Topic', true), 'Topic.title'); ?></th>
        <th><?php echo $paginator->sort(__d('forum', 'Forum', true), 'Topic.forum_category_id'); ?></th>
        <th><?php echo $paginator->sort(__d('forum', 'Author', true), 'User.username'); ?></th>
        <th><?php echo $paginator->sort(__d('forum', 'Created', true), 'Topic.created'); ?></th>
        <th><?php echo $paginator->sort(__d('forum', 'Posts', true), 'Topic.post_count'); ?></th>
        <th><?php echo $paginator->sort(__d('forum', 'Views', true), 'Topic.view_count'); ?></th>
        <th><?php echo $paginator->sort(__d('forum', 'Activity', true), 'LastPost.created'); ?></th>
    </tr>

    <?php if (empty($topics)) { ?>
    <tr>
        <td colspan="8" class="empty"><?php __d('forum', 'No results were found, please refine your search criteria.'); ?></td>
    </tr>
    <?php } else {
        $counter = 0;
        foreach ($topics as $topic) {
            $pages = $cupcake->topicPages($topic['Topic']); ?>

    <tr<?php if ($counter % 2) echo ' class="altRow"'; ?>>
        <td class="ac" style="width: 35px"><?php echo $cupcake->topicIcon($topic); ?></td>
        <td>
            <?php if (!empty($topic['Poll']['id'])) { 
                echo $html->image('/forum/img/poll.png', array('alt' => 'Poll', 'class' => 'img'));
            } ?>

            <?php echo $cupcake->topicType($topic['Topic']['type']); ?> 
            <strong><?php echo $html->link($topic['Topic']['title'], array('controller' => 'topics', 'action' => 'view', $topic['Topic']['id'])); ?></strong>

            <?php if (count($pages) > 1) { ?>
            <br /><span class="gray"><?php __d('forum', 'Pages'); ?>: [ <?php echo implode(', ', $pages); ?> ]</span>
            <?php } ?>
        </td>
        <td class="ac"><?php echo $html->link($topic['ForumCategory']['title'], array('controller' => 'categories', 'action' => 'view', $topic['Topic']['forum_category_id'])); ?></td>
        <td class="ac"><?php echo $html->link($topic['User']['username'], array('controller' => 'users', 'action' => 'profile', $topic['User']['id'])); ?></td>
        <td class="ac"><?php echo $time->niceShort($topic['Topic']['created'], $cupcake->timezone()); ?></td>
        <td class="ac"><?php echo number_format($topic['Topic']['post_count']); ?></td>
        <td class="ac"><?php echo number_format($topic['Topic']['view_count']); ?></td>
        <td>
            <?php // Last activity
            if (!empty($topic['LastPost'])) {
                $lastTime = (!empty($topic['LastPost']['created'])) ? $topic['LastPost']['created'] : $topic['Topic']['modified']; ?>

                <em><?php echo $time->relativeTime($lastTime, array('userOffset' => $cupcake->timezone())); ?></em><br />
                <span class="gray"><?php __d('forum', 'by'); ?> <?php echo $html->link($topic['LastUser']['username'], array('controller' => 'users', 'action' => 'profile', $topic['Topic']['lastUser_id'])); ?></span>
                <?php echo $html->image('/forum/img/goto.png', array('alt' => '', 'url' => array('controller' => 'topics', 'action' => 'view', $topic['Topic']['id'], 'page' => $topic['Topic']['page_count'], '#' => 'post_'. $topic['Topic']['lastPost_id']))); ?>
            <?php } else {
                __d('forum', 'No latest activity to display');
            } ?>
        </td>
    </tr>

        <?php ++$counter; 
        } 
    } ?>
    </table>

    <?php echo $this->element('pagination'); ?>
</div>
<?php } ?>

1 Ответ

0 голосов
/ 13 января 2012

Я добавил:

if (isset($this->Security)){
$this->Security->enabled=false;
   }

к функции beforeFilter search_controller.php, и теперь я могу получить результаты поиска.Нет больше HTTP 404 веб-сайт не найдена ошибка.:)

...