0
votes

I got this error:

Error 404 Unable to resolve the request "PlanComment/update".

It works well on local but not work on server. I also changed case sensitivity but still not work. Here is my code:

PlanCommentController.php

class PlanCommentController extends Controller
{
    /**
     * @var string the default layout for the views. Defaults to '//layouts/column2', meaning
     * using two-column layout. See 'protected/views/layouts/column2.php'.
     */
    public $layout='//layouts/column2';

/**
 * @return array action filters
 */
public function filters()
{
    return array(
        'accessControl', // perform access control for CRUD operations
       //   'postOnly + delete', // we only allow deletion via POST request
    );
}

/**
 * Specifies the access control rules.
 * This method is used by the 'accessControl' filter.
 * @return array access control rules
 */
public function accessRules()
{
    return array(
        array('allow', // allow authenticated user to perform 'create' and 'update' actions
            'actions'=>array('update', 'delete'),
            'users'=>array('@'),
        ),
        array('allow', // allow admin user to perform 'admin' and 'delete' actions
            'actions'=>array('delete'),
            'users'=>array('admin'),
        ),
        array('deny',  // deny all users
            'users'=>array('*'),
        ),
    );
}

....

View file: _comment.php

    $this->widget('booster.widgets.TbButtonGroup', array(
                          'htmlOptions' => array('class' => 'dropup'),
                          'buttons' => array(
                                array('items' => array(
                                    array('label' => 'Delete Comment', 'url' => array('PlanComment/delete',            'id'=>$comment->id, 'plan_id'=>$comment->plan_id),
                                           'visible'=>(Yii::app()->user->id == $comment->user_id) ||   Yii::app()->user->isPlanAuthor($comment->plan_id)),
                                    '---',
                                    array('label' => 'Edit Comment', 'url' => array('PlanComment/update', 'id'=>$comment->id, 'plan_id'=>$comment->plan_id),
                                            'visible'=>(Yii::app()->user->id == $comment->user_id)),
                      )),),)); ?>

Config file: main.php

// uncomment the following to enable URLs in path-format 'urlManager'=>array( 'urlFormat'=>'path', // remove index.php 'showScriptName'=>false, 'caseSensitive'=>false, 'rules'=>array( 'home'=>'site/index', 'plan'=>'plan/index', 'video'=>'video/index', 'login/<service:(google|google-oauth|yandex|yandex-oauth|twitter|linkedin|vkontakte|facebook|steam|yahoo|mailru|moikrug|github|live|odnoklassniki)>' => 'site/login', '<action:(login|register|logout|about)>' => 'site/<action>', '<controller:\w+>/<ten>_<id:\d+>'=>'<controller>/view', '<controller:\w+>/update/<ten>_<id:\d+>'=>'<controller>/update', '<controller:\w+>/view_thanhvien/<ten>_<id:\d+>'=>'<controller>/view_thanhvien', '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>', '<controller:\w+>/<action:\w+>'=>'<controller>/<action>', ), ),

Where is wrong in my code ? Please help.

1
See my answer here. Generally you want to avoid multiple capital letters within controller names other than the first letter of the controller name and the "C" in "Controller". - M Sost
I tried some ways at below but still not work: 1. PlancommentController.php class PlancommentController extends Controller 'url' => array('Plancomment/delete', ------------ 2. plancommentController.php class plancommentController extends Controller 'url' => array('plancomment/delete', ----------- 3. PlancommentController.php class PlancommentController extends Controller 'url' => array('planComment/delete', - Sam
Oh yeah. It works now. Thank you M Sost. My mistask about git commit. Work in below case: PlancommentController.php; class PlancommentController extends Controller; 'url' => array('plancomment/delete', - Sam

1 Answers

1
votes

Your url should be like "planComment/update" instead of "PlanComment/update". The first letter of controller name must be lower case.