Laravel-adminのformで使えるメソッドまとめ


概要

Laravel-adminのformで使えるメソッドをまとめたものです.一部公式ドキュメントと重複しています.


環境

Laravel 5.5 , Laravel-admin 1.6.9


共通で使えるメソッド

$form->text('id','ID');

$form->text('id','value')->value(10);
$form->text('id','readOnly')->readOnly();
$form->text('id','disabled')->disable();
$form->text('id','attribute')->attribute(['disabled' => '' , 'required' => '']);
$form->text('id','required')->required(true);
$form->text('id','setLabelClass')->setLabelClass(['class1','asterisk']);
$form->text('id','setWidth')->setWidth(5,2);

共通.PNG

valueメソッドはhtmlのvalue属性を指定します.

readOnly,disabled,requiredメソッドはinputタグにそれぞれの属性を付与します.また,requiredメソッドはlabelタグにasteriskクラスを付与します.

setLabelClassメソッドはlabelタグにクラスを付与します.

setWidthメソッドはsetWidth(フォーム,ラベル)の順で長さを指定します.長さはbootstrapのgridシステムにしたがいます.

requiredメソッドなどでアスタリスクを付ける場合はpublic/css/admin.css (admin.css以外でも可) に


public/css/admin.css

.asterisk:after {

position: absolute;
content: '*';
right: 0px;
color: red;
}

を追記します.


入力系

$form->text('text');

$form->textarea('textarea');
$form->textarea('rows')->rows(2);
$form->url('url');
$form->email('email');
$form->password('password');

入力.PNG

url,emailメソッドはアイコンが変わるだけで,ほとんどtextメソッドと同じ動作をします.

passwordメソッドは入力がドットに置き換わります.


数値

$form->number('number');

$form->number('max')->max(10);
$form->number('min')->min(1);
$form->decimal('decimal');
$form->ip('ip');
$form->mobile('mobile');
$form->rate('rate');

数字.PNG

numberメソッドは整数値用のフォームで,左右のボタンをクリックすると値が増減します.max,minメソッドで設定した値を超えないようにボタンが動作します.

decimalメソッドは数値用のフォームです.数値以外の文字を入力することはできません.

ipメソッドは各項が255を超えないように動作します.

mobileメソッドは数字以外の入力を受け付けません.


金額

$form->currency('currency');

$form->currency('digits4')->digits(4);
$form->currency('symbol')->symbol('¥');

金額.PNG

digitsメソッドは小数点以下の桁数を指定します.

symbolメソッドはアイコンを変更します.


日付

$form->date('date');

$form->date('format')->format('DD-MM-YYYY');
$form->time('time');
$form->datetime('created_at','datetime');

日付.PNG


チェックボックス

$form->checkbox('checkbox')->options([

'value1' , 'value2',
]);
$form->checkbox('checked')->options([
'checked1' , 'checked2',
])->checked([
'checked1',
]);

チェックボックス.PNG


ラジオボタン

$form->radio('radio')->options([

'option1' , 'option2'
]);
$form->radio('checked')->options([
'option1' , 'option2' , 'option3',
])->checked([
'option1' , 'option2',
]);
$form->radio('inline')->options([
'option1' , 'option2' , 'option3',
])->inline();
$form->radio('stacked')->options([
'option1' , 'option2' , 'option3',
])->stacked();

ラジオボタン.PNG


セレクトボックス

$form->select('select')->options([

'option1' , 'option2' , 'option3'
]);
$form->multipleSelect('multipleSelect')->options([
'option1' , 'option2' , 'option3'
]);

セレクトボックス.PNG

selectメソッドはセレクトボックスを表示します.

ajaxを用いてoptionを動的に生成することができます(公式ドキュメント参照).

multipleSelectメソッドは複数を選択することができます.


ファイル

$form->file('file');

$form->image('image');
$form->imageField('imageField');
$form->multipleFile('multiple');
$form->multipleImage('multipleImage');

ファイル.PNG


タグ

$form->tags('tags')->options([

'option1' , 'option2' , 'option3',
]);

タグ.PNG

タグメソッドは選択したタグをカンマで区切り,送信します.


ボタン

$form->button('button')->on('click',

<<<JS
console.log('click!!!')
JS
);

ボタン.PNG

buttonメソッドはボタンを表示します.引数は

$('{$this->getElementClassSelector()}').on('$event', function() {

$callback
});

に文字列として埋め込まれます.\$eventが第一引数で,\$callbackが第二引数です.


スライドバー・スイッチ

$form->slider('slider');

$form->switch('switch');

特殊.PNG

switchメソッドはboolean型のカラムで用います.


カラーピッカー

$form->color('Color');

$form->color('HEX')->hex();
$form->color('RGB')->rgb();
$form->color('RGBA')->rgba();

カラー.PNG

左の赤の四角をクリックするとカラーピッカーが表示されます.


特殊表示

$form->id('id');

$form->display('id','ID');
$form->display('id','with')->with(function(){
return 'このページのIDは' . $this->id . 'です';
});
$form->divider();
$form->html('<div class="btn btn-primary">HTML</div>');
$form->icon('icon');

特殊表示.PNG

idメソッドはreadonly属性を持ったフィールドを表示します.

displayメソッドは指定したカラムの値を表示します.この値はそのままHTMLに埋め込まれるため,送信されません.

withメソッドはdisplayメソッドで表示する内容を調整することができます.コールバック内の\$thisはモデルのインスタンスを指します.

dividorメソッドはその場所に<hr>を挿入します.

htmlメソッドはHTMLを直接埋め込むことができます.そのため,意図しない動作を引き起こす可能性があるので注意が必要です.

iconメソッドはアイコンを選ぶことができます.


隠し入力

$form->hidden('hidden');

表示されないinput要素を生成します.


HasMany

$form->hasMany('books',function(Form\NestedForm $nestedForm) {

$nestedForm->display('id');
});
$form->hasMany('books',function(Form\NestedForm $nestedForm) {
$nestedForm->display('id');
})->disableCreate()->disableDelete();

hasMany.PNG

1対多の関係でつながったデータを表示します.

disableCreate,disableDeleteメソッドはそれぞれ新規・消去ボタンを無効化します.

次のような状況ではうまく動作しないことがあります:Authorモデルがbookカラムを持ち,更に子として


Author.php

public function books() {

return $this->hasMany(Book::class,'author_id')->orderBy('id','asc');
}

を持つ場合.

この場合,


Author.php

public function books_table() {

return $this->hasMany(Book::class,'author_id')->orderBy('id','asc');
}

のように名前の重複を避け,"hasMany('books_table' , func..."とすると動作します.


参考元

Laravel-adminドキュメント

https://laravel-admin.org/docs/