グリッドとフォームに表示される列を制限して、setModel の 2 番目のパラメーターを使用してモデル内のすべてを表示しないようにすることができます。
$c1=$crud1->setModel($m, array('id', 'name', 'column1', 'column2'));
where 句を修正する addCondition を使用して、グリッドに表示される行を制限できます。両方合わせるとこんな感じ
<?php
class page_yourpage extends Page {
function init() {
$p=$this;
$crud1=$p->add('View_CRUD');
$m=$p->add('Model_YourModel');
$m->addCondition('column1','value1');
$m->order('column2');
$c1=$crud1->setModel($m, array('id', 'name', 'column1', 'column2'));
}
}
?>
mcanedo で提案されているように、フィールドを system(true) に設定すると、グリッドに列を表示できますが、追加/編集フォームには表示されません。
グリッドまたはフォームに表示されていないが、$m->get('columnname') を使用してページを参照するときにアクセス可能なフィールドを持つこともできます。 mysql。
<?php
class Model_YourModel extends Model_Table {
public $entity_code='yourtable';.
public $table_alias='yt';
function init(){
parent::init();
$this->addField('id')->system(true)->visible(false);
$this->addField('name');
$this->addField('column1')->system(true);
$this->addField('column2')->system(true)->visible(false);
これにより、名前の列と列 2 を含むグリッドが作成されますが、新しいフィールドを追加または編集するときは、名前の値のみを入力できます。
次に、以下のように YourModel に追加することで、これをさらに進めることができます (そして、YourModel.column3_id が別のテーブルへの外部キーを持つフィールドであると仮定します)
$this->addFIeld('column3_id')->refModel('Model_AnotherModel');
ここで、「AnotherModel」は次のように定義されています
<?php
class Model_AnotherModel extends Model_Table {
public $entity_code='anothertable';.
public $table_alias='at';
function init(){
parent::init();
$this->addField('id')->system(true)->visible(false);
$this->addField('name');
}
}
これにより、ユーザーが「別のテーブル」から有効な値を選択できるフォームにドロップダウン リストが追加され、グリッドには、実際に「yourtable」に格納されている ID の代わりに名前フィールドが表示されます。