现在的位置: 首页 > 综合 > 正文

CakePHP 编程笔记

2013年10月15日 ⁄ 综合 ⁄ 共 3055字 ⁄ 字号 评论关闭

 1. Notice (8) : Undefined variable: layout

 

原因可能是component的命名不符合规范:JigoCity对应的文件名应该jigo_city.php

 

如果这个没错,而你的app_controller里面包含了acl组件,那么可能是plugin目录下缺失ACL的实现

 

2. 进入localhost:8000/admin时未要求登录验证,直接进入了后台页面

 

原因是app_controller.php中有如下语句:

 function beforeFilter() {
  $this->Auth->allow('*');
 }

 

去掉才可以进入CakePHP默认的验证界面(auth组件)

 

3. CakePHP程序调用堆栈:

v1.5 [PHP Web Page] 
  PHP Application 
  http://localhost:8000//index.php (suspended at line breakpoint ) 
   beforeFilter(): /jigocity_v1_5/app/controllers/app_controller.php at line 84 
   beforeFilter(): /jigocity_v1_5/app/controllers/app_controller.php at line 83 
   startupProcess(): /jigocity_v1_5/cake/libs/controller/controller.php at line 526 
   startupProcess(): /jigocity_v1_5/cake/libs/controller/controller.php at line 524 
   _invoke(): /jigocity_v1_5/cake/dispatcher.php at line 187 
   _invoke(): /jigocity_v1_5/cake/dispatcher.php at line 185 
   dispatch(): /jigocity_v1_5/cake/dispatcher.php at line 171 
   dispatch(): /jigocity_v1_5/cake/dispatcher.php at line 97 
   /jigocity_v1_5/index.php at line 83 
 http://localhost:8000//index.php  

 

4. 登陆后未显示用户名密码错误,但是页面未正常跳转

可能是你设置了如下语句:

$this->Auth->autoRedirect = false;

 

uncomment it if so.

 

5. security component 加载后, 会在form表单提交时添加token隐性参数以防止跨站脚本攻击和表单伪造。但是也会导致未授权表单提交动作返回404页面链接不存在的错误。

 

6. 更改datetime格式:

http://www.mikebernat.com/blog/CakePHP_-_Changing_the_Default_Value_of_a_Date-Time_Input

 

7. 设置默认的按列排序

        $tableHeaders =  $html->tableHeaders(array(
            $paginator->sort('id'),
            __('Role', true),
            $paginator->sort('username'),
            $paginator->sort('firstname'),
            $paginator->sort('email'),
            __('Actions', true),
        ));

 

8. 关联保存

            <div id="deal-main">
             <?php
              echo $form->input('Deal.slug', array('class' => 'slug'));
     echo $form->input('Deal.min_buyers');
     echo $form->input('Deal.max_buyers');                         
             ?>
            </div>               
            <div id="deal-details">
             <?php
     echo $form->input('DealDetail.0.lang_id',array('label'=>__('Language', true)));
     echo $form->input('DealDetail.0.currency_id');                
     echo $form->input('DealDetail.0.title');
     echo $form->input('DealDetail.0.subject'); 
     echo $form->input('DealDetail.0.brief'); 
     echo $form->input('DealDetail.0.description');                       
             ?>
            </div>

 

9. tinymce usage:

  *) put it under plugin directory

  *) change tinymce_hook.php:

/**
 * Actions
 *
 * Format: ControllerName/action_name => settings
 *
 * @var array
 */
    public $actions = array(
        'Deals/admin_add' => array(
            'elements' => 'DealDetail0Description',
        ),
        'Deals/admin_edit' => array(
            'elements' => 'DealDetail0Description',
        ),
    );

 

10. cakephp的命名规范

比如读取外键关联的表数据时,如果失败,则需要检查外键名称,表名称,字段名称是否符合命名规范。

例如: 外键为lang_id, 那么这在视图是个下拉列表选择框。

view中应该是:

echo $form->input('DealDetail.0.lang_id',array('label'=>__('Language', true)));

controller中:

  $langs = $this->Language->find('list', array(
   'fields' => array('name_en')
  ));

model中:

 var $belongsTo = array(
  'Language' => array(
            'className'    => 'Language',
            'foreignKey'    => 'lang_id'
        ), 

 )

 

抱歉!评论已关闭.