Как указать код статуса HTTP в Cakephp?

Вы должны пропустить. Для вашего конкретного случая:

db.person.find().snapshot().forEach(
    function (elem) {
        db.person.update(
            {
                _id: elem._id
            },
            {
                $set: {
                    name: elem.firstname + ' ' + elem.lastname
                }
            }
        );
    }
);
27
задан allyourcode 8 July 2009 в 22:26
поделиться

3 ответа

РЕДАКТИРОВАТЬ - Этот вопрос довольно старый и касается различных версий инфраструктуры CakePHP. Ниже приводится краткое изложение того, к какой версии относится каждый ответ. Не забудьте проголосовать за решение, которое больше всего помогает.

РЕДАКТИРОВАТЬ # 2 - более подробный ответ для CakePHP 2.x был добавлен Mark37.

РЕДАКТИРОВАТЬ # 3 - Добавлено решение для CakePHP. (Май 2018: CakePHP 3.5 переименовал некоторые функции, решение Роберто все еще действует.)


Глядя на соответствующий код API из предыдущего комментария, кажется, что вы можете вызвать Controller :: header ($ status ) для вывода заголовка без перенаправления. В вашем случае наиболее вероятно правильное использование:

$this->header('HTTP/1.1 403 Forbidden');
39
ответ дан 28 November 2019 в 04:10
поделиться

Возможно, что-то в этом разделе руководства cakephp может вам помочь.

redirect (string $ url, integer $ status, boolean $ exit)

Метод управления потоком, который вы будете использовать чаще всего это redirect (). Этот метод принимает свой первый параметр в виде относительного URL-адреса CakePHP. Когда пользователь успешно разместил заказ, вы может захотеть перенаправить их на экран квитанции. Второй параметр of redirect () позволяет определить Код состояния HTTP для сопровождения перенаправить. Вы можете использовать 301 (переехал на постоянное место жительства) или 303 (см. другое), в зависимости от характера перенаправить.

Метод вызовет exit () после перенаправление, если вы не установите третий значение false.

3
ответ дан 28 November 2019 в 04:10
поделиться

После повторного просмотра этого вопроса и чтения комментария Адриано к мой предыдущий ответ (относительно перенаправления пользователя на дружественную страницу), я придумал новое решение.

Внутри контроллера вы можете вызвать $ this-> cakeError ('error404') для генерации дружественная страница 404. Это можно настроить (как и другие ошибки), создав файл в " app / views / errors / error404.ctp ".

После внимательного изучения кода для ] cakeError , я рекомендую попробовать расширить Cake ErrorHandler , создав файл в ' app / error.php ' или (возможно, более предпочтительно) ' app / app_error.php '.

Код для error403 (имитирующий error404 код ) может выглядеть следующим образом:

class AppError extends ErrorHandler {
    function error403($params) {
        extract($params, EXTR_OVERWRITE);
        $this->error(array(
            'code' => '403',
            'name' => 'Forbidden',
            'message' => sprintf(__("Access was forbidden to the requested address %s on this server.", true), $url, $message)));
            $this->_stop();
     }
}

Вы также должны предоставить пользовательское представление для этой ошибки, создав « app / views / errors / error403.ctp ». Вот модифицированная версия представления error404 :

<h2><?php echo $name; ?></h2>
<p class="error">
    <strong>Error: </strong>
    <?php echo sprintf(__("Access was forbidden to the requested address %s on this server.", true), "<strong>'{$message}'</strong>")?>
</p>
7
ответ дан 28 November 2019 в 04:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: