LoginSignup
56
73

More than 3 years have passed since last update.

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

Posted at

概要

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/

56
73
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
56
73