Welcome to the Cookbook

loading...

3.5.4 Controller Attributes

The original text for this section has changed since it was translated. Please help resolve this difference. You can:

More information about translations

Untuk senarai penuh controller attributes dan huraiannya sila lawat CakePHP API. Sila rujuk http://api.cakephp.org/1.2/class_controller.html.

3.5.4.1 $name

Pengguna PHP4 patut memulakan definasi controller menggunakan $name attribute. Attribut $name patut di set pada nama controller. Biasanya ini cuma plural form pada primary model yang digunakan controller. Ini mengelakkan penggunaan nama kelas PHP4 yang pelik dan membantu CakePHP menyelesaikan penamaan.

<?php

#   $name controller attribute usage example

class RecipesController extends AppController {
   var $name = 'Recipes';
}

?>	
  1. <?php
  2. # $name controller attribute usage example
  3. class RecipesController extends AppController {
  4. var $name = 'Recipes';
  5. }
  6. ?>

3.5.4.2 $components, $helpers dan $uses

The original text for this section has changed since it was translated. Please help resolve this difference. You can:

More information about translations

Seterusnya yang selalu digunakan controller attribute ialah memberitahu CakePHP apa helpers, components, dan models yang anda akan gunakan dalam gabungan dengan controller yang sedang digunakan. Menggunakan attribute ini membuat kelas MVC ini boleh dipakai pada controller sebagai variable kelas ($this->ModelName, for example).

Setiap controller ada beberapa kelas sedia ada secara default, jadi anda mungkin tidak perlu mengkonfigurasi controller anda langsung.

Controllers ada akses pada primary modelnya secara default. RecipesController kita akan ada kelas model Recipe model iaitu $this->Recipe, dan ProductsController kita juga menggunakan Product model iaitu $this->Product.

Html, Form, dan Session Helpers sentiasa ada (baca: available) secara default, begitu juga SessionComponent. Untuk mempelajari lebih lanjut mengenai kelas ini, pastikan untuk merujuk bahagian mereka pada manual ini.

Mari lihat bagaimana untuk beritahu CakePHP controller yang anda bercadang untuk menggunakan kelas MVC tambahan.

<?php
class RecipesController extends AppController {
    var $name = 'Recipes';

    var $uses = array('Recipe', 'User');
    var $helpers = array('Ajax');
    var $components = array('Email');
}
?>   
  1. <?php
  2. class RecipesController extends AppController {
  3. var $name = 'Recipes';
  4. var $uses = array('Recipe', 'User');
  5. var $helpers = array('Ajax');
  6. var $components = array('Email');
  7. }
  8. ?>

Setiap dari variable ini bersambung dengan nilai yang diwarisi (baca: inherited) Jadi tidak perlu (sebagai contoh) untuk menetapkan lagi Form helper, atau apa apa sahaja yang sudah diisytiharkan pada App controller anda.

3.5.4.3 Berkenaan Attributes Halaman: $layout dan $pageTitle

The original text for this section has changed since it was translated. Please help resolve this difference. You can:

More information about translations

Ada beberapa attribute wujud dalam CakePHP controller yang memberikan anda kuasa untuk mengawal bagaimana paparan anda di set di dalam layout

Attribute $layout boleh di set pada nama layout yang disimpan di /app/views/layouts. Anda menetapkan layout dengan setting $layout sama dengan fail layout tanpa extension .ctp. Jika attribute ini tidak ditetapkan, CakePHP akan guna default layout, iaitu default.ctp. Jika anda tidak tetapkan (walau satu pun) pada /app/views/layouts/default.ctp, CakePHP’s core default layout akan digunakan.

<?php

//   Using $layout to define an alternate layout

class RecipesController extends AppController {
    function quickSave() {
        $this->layout = 'ajax';
    }
}

?>
  1. <?php
  2. // Using $layout to define an alternate layout
  3. class RecipesController extends AppController {
  4. function quickSave() {
  5. $this->layout = 'ajax';
  6. }
  7. }
  8. ?>

Anda boleh mengubah tajuk halaman (yang letaknya pada bar paling atas di browser anda) menggunakan $pageTitle. Untuk membuat ia jalan dengan betul, layout anda perlu masukkan variable $title_for_layout , Paling tidak di antara tag <title> dan </title> pada kepala HTML document.

<?php

//   Using $pageTitle to define the page title

class RecipesController extends AppController {
    function quickSave() {
        $this->pageTitle = 'My search engine optimized title';
    }
}

?>
  1. <?php
  2. // Using $pageTitle to define the page title
  3. class RecipesController extends AppController {
  4. function quickSave() {
  5. $this->pageTitle = 'My search engine optimized title';
  6. }
  7. }
  8. ?>

Anda juga boleh set tajuk halaman daripada view menggunakan $this->pageTitle (Anda mesti masukkan bahagian $this-> .) Ini disarankan, kerana lebih baik dipisahkan logic daripada layout dan content. Untuk halaman yang statik anda perlu guna $this->pageTitle pada view jika anda mahu custom title.

jika $this->pageTitle tidak di set, Secara automatik tajuk akan dijana bergantung kepada nama controller, atau nama fail view jika halaman statik.

3.5.4.4 Attribute Parameter ($params)

Controller parameters ada di $this->params pada CakePHP controller. Variable ini digunakan untuk memberikan akses maklumat mengenai current request. Penggunaan $this->params selalunya adalah mengambil akses pada maklumat yang telah diberikan pada controller melalui operasi POST atau GET .

3.5.4.4.1 form

$this->params['form']

Sebarang data POST dari sebarang form disimpan disini, termasuklah maklumat dari $_FILES.

3.5.4.4.2 admin

$this->params['admin']

Di set kan 1 jika action sekarang diarah melalui admin routing.

3.5.4.4.3 bare

$this->params['bare']

Simpan 1 jika current layout kosong, 0 jika tidak.

3.5.4.4.4 isAjax

The original text for this section has changed since it was translated. Please help resolve this difference. You can:

More information about translations

$this->params['ajax']

Simpan 1 jika current request ialah ajax call, 0 jika tidak. Variable ini cuma di set jika RequestHandler Component digunakan pada controller.

3.5.4.4.5 controller

$this->params['controller']

Simpan nama current controller yang menguruskan request. Sebagai contoh, jika URL /posts/view/1 yang diminta, $this->params['controller'] adalah sama dengan "posts".

3.5.4.4.6 action

$this->params['action']

Simpan nama current action yang mengendalikan request. Sebagai contoh, jika URL /posts/view/1 yang diminta, $this->params['action'] adalah sama dengan "view".

3.5.4.4.7 pass

The original text for this section has changed since it was translated. Please help resolve this difference. You can:

More information about translations

$this->params['pass']

Simpan string query GET yang melepasi current request. Sebagai contoh, jika URL /posts/view/?var1=3&var2=4 yang diminta, $this->params['pass'] adalah sama dengan "?var1=3&var2=4".

3.5.4.4.8 url

$this->params['url']

Simpan URL yang sedang diminta, bersama dengan pasangan key-value dari variable get. Misalnya, jika URL /posts/view/?var1=3&var2=4 yang dipanggil, $this->params['url'] mengandungi:

[url] => Array
(
    [url] => posts/view
    [var1] => 3
    [var2] => 4
)

3.5.4.4.9 data

$this->data

Digunakan untuk mengendalikan data POST yang dihantar daripada FormHelper forms kepada controller.

// The FormHelper is used to create a form element:
$form->text('User.first_name');
  1. // The FormHelper is used to create a form element:
  2. $form->text('User.first_name');

Di mana bila dipaparkan, kelihatan seperti:

 
<input name="data[User][first_name]" value="" type="text" />

Bila form dihantar melalui POST, data muncul di this->data

 
//The submitted first name can be found here:
$this->data['User']['first_name'];
  1. //The submitted first name can be found here:
  2. $this->data['User']['first_name'];

3.5.4.4.10 prefix

$this->params['prefix']

Set pada routing prefix. Misalnya, attribute ini mengandungi string "admin" ketika request kepada /admin/posts/someaction.

3.5.4.4.11 named

$this->params['named']

Simpan sebarang parameters yang dinamakan pada url query string pada form /key:value/. Misalnya, jika URL /posts/view/var1:3/var2:4 yang diminta, $this->params['named'] akan mengandungi array:

[named] => Array
(
    [var1] => 3
    [var2] => 4
)

3.5.4.5 Attributes lain

Sementara anda membelek keterangan untuk semua attributes controller dalam API, ada attributes controller lain yang mengandungi bahagian mereka sendiri dalam manual.

Attribute $cacheAction membantu dalam memapar caching, dan attribute $paginate digunakan untuk set pagination defaults untuk controller. Untuk maklumat lanjut bagaimana menggunakan attribute-attribute ini, sila rujuk bahagian halaman mereka di manual ini.

3.5.4.6 persistModel

ada perubahan tertangguh untuk seksyen ini. More information about translations

Stub. Update Me!

Used to create cached instances of models a controller uses. When set to true, all models related to the controller will be cached. This can increase performance in many cases.