質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
laravel-admin

laravel-adminは、Laravelに対して管理者用インタフェースを実装するために必要な部品を補うライブラリ。コントローラーでのCRUD処理が可能で、フォームやテーブルに使う値の整形およびテンプレートも提供されています。

Q&A

解決済

1回答

2259閲覧

laravel-admin 未入力の場合、中間テーブルへの登録させない方法

退会済みユーザー

退会済みユーザー

総合スコア0

laravel-admin

laravel-adminは、Laravelに対して管理者用インタフェースを実装するために必要な部品を補うライブラリ。コントローラーでのCRUD処理が可能で、フォームやテーブルに使う値の整形およびテンプレートも提供されています。

0グッド

0クリップ

投稿2021/11/13 08:51

編集2021/11/13 10:28

laravel-adminを使用してお知らせ機能を開発しています。

実現したい事

お知らせを新規作成する際、
配信対象がuserの場合はuser_idの入力必須
配信対象がallの場合はuser_id入力欄が空欄でも登録可能。

具体的には、
user_idが入力された場合、ユーザーとお知らせを紐付ける中間テーブルに登録。
user_idが入力されていない場合、お知らせテーブルにだけ登録。

新規作成画面でallを選択した場合にuser_id入力フォームを無視したいのですが、どうすれば良いのかがわかりません。
user_idが入力されている場合、中間テーブルに挿入させる多対多のリレーションには成功しています。

丸投げの質問で申し訳ないですが、初心者のためlaravelの知識がまだまだ足りないということもあり、的確な解決策を見つけ出す検索力もなく、この場を借りてヒントだけでも頂戴したいです。
何か、解決策をご提案いただけると幸いです。

php

1//お知らせController 2 3$form->select('delivery_target', '配信対象')->options([ 4 'all' => '全て', 5 'user' => 'ユーザー', 6 ]); 7 8$form->list('users', 'ユーザーID')->options(User::pluck('id'))->rules('nullable|required_if:delivery_target,user');

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

model form callbackでignoreを使えば実現できました。

php

1// 配信対象all、ユーザーID未入力の際、usersを無視する。 2 $form->submitted(function (Form $form) { 3 if ($form->delivery_target !== 'user') { 4 $form->ignore('users'); 5 } 6 });

投稿2021/11/16 08:57

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問