Перенаправление времени в cakePHP?

заголовок ("обновить: 5; url = 'pagetoredirect.php'");

мы можем использовать это, если мы хотим перенаправить нашу страницу за 5 секунд,

Есть ли способ перенаправить страницу за 5 секунд в cakephp?

если да, пожалуйста, дайте мне знать


person magytours    schedule 31.08.2011    source источник
comment
В CakePHP все еще есть PHP. Вы пробовали этот код?   -  person deceze♦    schedule 31.08.2011


Ответы (3)


Вы можете попробовать использовать метод AppController header():

http://api.cakephp.org/class/app-controller#method-AppControllerheader

В вашем контроллере:

class CarController{
   public function add(){
      $this->header("") //Implemented on AppController::header
   }
}
person santiagobasulto    schedule 31.08.2011

/cake/libs/controller/controller.php

/**
 * Convenience and object wrapper method for header().  Useful when doing tests and
 * asserting that particular headers have been set.
 *
 * @param string $status The header message that is being set.
 * @return void
 * @access public
 */
    function header($status) {
        header($status);
    }
...

Это показывает, что функция Controller::header() является простой оболочкой для прямых вызовов функции php header().

http://api.cakephp.org/class/app-controller#method-AppControllerheader

Итак, чтобы выполнить то, что вы хотите сделать:

/app/controllers/examples_controller.php

<?php
    class ExamplesController extends AppController
    {
        public $name = "Examples";
        ...
        public function someAction( ){
            ...
            $url = array( 'controller' => 'examples', 'action' => 'someOtherAction' );
            $this->set( 'url', $url );
            $this->header( "refresh:5; url='".Router::url( $url )."'" );
        }
        ...
    }
?>

Я передаю URL-адрес представлению и не использую die() или exit(), если вы действительно хотите отобразить представление. Пример:

/app/views/examples/some_action.ctp

<p class='notice'>
    <?php echo $this->Html->link( "You are being redirected to ".Router::url( $url )." in 5 seconds. If you do not wish to wait click here.", $url ); ?>
</p>
person Abba Bryant    schedule 31.08.2011

Не используйте заголовок $this->в контроллере, так как он будет удален в версии 3.0. Используйте CakeResponse::header().

вот рабочий пример для cakephp 2.8

Контроллер:

$url = array('controller' => 'pages', 'action' => 'index');
        $second = '5';
        if (!$sessionData) {
            return $this->redirect($url);
        }
        $this->Session->delete($bookingStr);
        $this->response->header("refresh:$second; url='" . Router::url($url) . "'");
        $this->set(compact('url', 'second'));

Вид:

<p class='notice'>
    <?php echo $this->Html->link( "You are being redirected to ".Router::url($url, TRUE)." in ".$second." seconds. If you do not wish to wait click here.", $url ); ?>
</p>


<div class="step-content"> 
    <div class="booking-form">
        <div class="row">
            Thank you. 
        </div>
    </div>
</div>
person Faiyaz Alam    schedule 06.07.2016