2014-02-12 6 views
0

В моем веб-приложении у меня есть страница под названием «MyHome», которая должна быть просмотрена после успешного входа в систему. Я включил эту страницу в папку сайта. Но она показывает следующую ошибку:Yii перенаправление на другую страницу просмотра после входа в систему

Error 404 
The system is unable to find the requested action "MyHome". 

Мой код actionLogin из SiteController

public function actionLogin() 
{ 


    $model=new LoginForm; 


    if(isset($_POST['ajax']) && $_POST['ajax']==='login-form') 
    { 
     echo CActiveForm::validate($model); 
     Yii::app()->end(); 
    } 


    if(isset($_POST['LoginForm'])) 
    { 
     $model->attributes=$_POST['LoginForm']; 

     if($model->validate() && $model->login()) 

    // $this->redirect(Yii::app()->user->returnUrl); 
     $this->redirect(array('/site/MyHome')); 

    } 

    $this->render('login',array('model'=>$model)); 
} 

Мой код для просмотра страницы MYHOME

<?php /* @var $this Controller */ ?> 
<?php Yii::app()->bootstrap->register(); ?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <meta name="language" content="en" /> 

    <!-- blueprint CSS framework --> 
    <link rel="stylesheet" type="text/css" href="<?php echo Yii::app()->request->baseUrl; ?>/css/screen.css" media="screen, projection" /> 
    <link rel="stylesheet" type="text/css" href="<?php echo Yii::app()->request->baseUrl; ?>/css/print.css" media="print" /> 
    <!--[if lt IE 8]> 
    <link rel="stylesheet" type="text/css" href="<?php echo Yii::app()->request->baseUrl; ?>/css/ie.css" media="screen, projection" /> 
    <![endif]--> 

    <link rel="stylesheet" type="text/css" href="<?php echo Yii::app()->request->baseUrl; ?>/css/main.css" /> 
    <link rel="stylesheet" type="text/css" href="<?php echo Yii::app()->request->baseUrl; ?>/css/form.css" /> 

    <title><?php echo CHtml::encode($this->pageTitle); ?></title> 
</head> 

<body> 

<div class="container" id="page"> 

    <div id="header"> 
     <div id="logo"><?php echo CHtml::encode(Yii::app()->name); ?></div> 
    </div><!-- header --> 

    <div id="mainmenu"> 
     <?php $this->widget('zii.widgets.CMenu',array(
      'items'=>array(
       array('label'=>'All offers', 'url'=>array('/producerOffer/index'),'visible'=> Yii::app()->user->type==="consumer"), 
       array('label'=>'My requirements', 'url'=>array('/consumerReq/view', array('id'=>Yii::app()->user->id)),'visible'=> Yii::app()->user->type==="consumer"), 
       array('label'=>'All requirements', 'url'=>array('/ConsumerReq/index'),'visible'=> Yii::app()->user->type==="producer"), 
       array('label'=>'My offers', 'url'=>array('/producerOffer/view',array('id'=>Yii::app()->user->id)), 'visible'=>Yii::app()->user->isGuest), 
       array('label'=>'Logout ('.Yii::app()->user->name.')', 'url'=>array('/site/logout'), 'visible'=>!Yii::app()->user->isGuest), 

      ), 
     )); ?> 
    </div><!-- mainmenu --> 
    <?php if(isset($this->breadcrumbs)):?> 
     <?php $this->widget('zii.widgets.CBreadcrumbs', array(
      'links'=>$this->breadcrumbs, 
     )); ?><!-- breadcrumbs --> 
    <?php endif?> 

    <?php echo $content; ?> 

    <div class="clear"></div> 

    <div id="footer"> 
     Copyright &copy; <?php echo date('Y'); ?> by My Company.<br/> 
     All Rights Reserved.<br/> 
     <?php echo Yii::powered(); ?> 
    </div><!-- footer --> 

</div><!-- page --> 

</body> 
</html> 

После успешной авторизации эта страница должна быть вынесенным кто поможет мне, как решить эту проблему, так как я новичок

ответ

0

Попробуйте этот код:

$this->redirect(array('site/MyHome')); 
+0

Я получаю ту же ошибку – user2492854

+0

опубликовать ошибку и добавить свой сайт код контроллера также в вашем вопросе. –

+0

его ту же ошибку, которую я опубликовал – user2492854

1

ли вы действия, определенные в этом контроллере ? Похоже, эта ошибка возникла из-за отсутствия определенного действия. Попробуйте определить метод actionMyHome в контроллере сайта.

 

public function actionMyHome() { 
    $this->render('myHome',array()); 
} 
 
+0

Нет Я не определил это действие в siteController, как мне написать действие с его статической страницы и не предоставлять какие-либо данные? Можете ли вы мне помочь – user2492854

+0

Я добавил ее к ответу выше. Это то, что вы ищете? – wallerjake

+0

ya его обращение к моей домашней странице, но отображение только шаблона, а не всех ссылок в коде просмотра. можете ли вы сказать мне, что мне делать? – user2492854

0

Попробуйте это,

$url = Yii::app()->createUrl('site/MyHome'); 

Yii::app()-request->redirect($url); 

OR 

$this->redirect($url); 

Проверьте также наличие функции actionMyhome 'доступна в 'SiteController'

1

Вы отсутствующего действия, которые вы направляете к.

В коде авторизации, у вас есть:

$this->redirect(array('/site/MyHome')); 

будет переадресован на метод actionMyHome() в классе SiteController.

Таким образом, вам нужно создать недостающий класс:

class SiteController extends Controller { 

    public function actionMyHome() { 
     echo 'I am still here'; 
    } 

} 
0

SiteController, как она создается имеет page действие, которое отображает статические страницы. Используя эту функцию, вам не нужно добавлять новые действия каждый раз, когда вы добавляете статический контент.

Для перенаправления на статическую страницу, поместите код страницы в protected/views/site/pages и использовать page действие в URL-адресов:

$this->redirect(array('/site/page', 'view'=>'MyHome')); 
1

Попробуйте этот код:

$this->redirect(array('/MyHome')); 
-1

Он должен быть определен

public function accessRules() {  return array(   array('allow', 
       'actions'=>array('myhome'), 
       'users'=>array('@'),   ), 
        ); } 
+0

Пожалуйста, улучшите свой код ответа. См. [This] (https://stackoverflow.com/help/how-to-answer) –

+0

- это достаточно @ankit – user9398098

+0

да, намного улучшилось. см. это [предложение] (https://www.google.co.in/search?q=php+codebeautifier&rlz=1C1CHBD_enIN725IN725&oq=php+codebea&aqs=chrome.0.0j69i57.4464j0j7&sourceid=chrome&ie=UTF-8) для большего улучшения –

0

Я думаю, проблема на веб-сервере вы используете iis или apache или? пожалуйста, протестируйте ниже код

class SiteController extends Controller { 
    public function actionMyhome() { 
     $this->render('myhome',array()); 
     } 
    } 

и изменить MyHome.php в myhome.php файл в представлении /site/MyHome.php

Смежные вопросы