سلام خدمت دوستان گرامی.
چگونه الزامی بودن یا نبودن فیلد ها به تیک خوردن یا نخوردن چک باکس مرتبط باشد؟
برای مثال فرض کنید یک محصول در حالت اول دارای یک قیمت ثابت است ولی در حالت دوم محصول با توجه به وزن دارای قیمت های متفاوتی است
فیلد های حالت اول در table product و دفیلد های حالت دوم در pivot table product_weight ذخیره می شوند
اگر چک باکس تیک خورده شود فیلد های حالت اول غیر فعال می شوند و فیلد های حالت دوم ظاهر می شوند.
حالا ما می خواهیم با توجه به حالت چک باکس وارد کردن فیلدها الزامی یا غیر الزامی شود.
با توجه به مستندات لاراول از required_with و required_without استفاده کردم ولی به درستی کار نمی کنه.
وقتی فیلدهای حالت دوم خالیه خطای null بودن در همون صفحه نمایش داده نمیشه
SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'new_prices' cannot be null (SQL: insert into `product_weight` (`new_prices`, `old_prices`, `product_id`, `weight_id`) values (, , 61, 1))
ولی اگر فیلد های حالت اول خالی باشه خطا در همان صفحه به درستی نمایش داده میشه
نظر شما دوستان گرامی چیه؟
product
protected $fillable = [
'old_price' , 'new_price',
];
protected $guarded = [''weights', 'old_prices' , 'new_prices'];
public function weights(){
return $this->belongsToMany(Weight::class)->withPivot('new_prices','old_prices');
}
create
<input type="text" name="new_price">
<input type="text" name="old_price">
<input type="checkbox" id="diff" name="diff" value="۱" >
<select class="form-control" name="weights[]" id="weight" data-live-search="true" >
@foreach($weights as $weight)
<option value="{{$weight->id}}" > {{$weight->name}} </option>
@endforeach
</select>
<input type="text" name="new_prices[]" >
<input type="text" name="old_prices[]" >
اعتبارسنجی
public function rules()
{
if($this->method() == 'POST' ) {
return [
'old_price' => 'required_without:diff',
'new_price' => 'required_without:diff',
'old_prices' => 'required_with:diff',
'new_prices' => 'required_with:diff',
];
}
چون فیلدهای حالت دوم آرایه بودند باید در اعتبار سنجی بجای
'old_prices' => 'required_with:diff',
'new_prices' => 'required_with:diff',
از
'old_prices.*' => 'required_with:diff',
'new_prices.*' => 'required_with:diff',
استفاده می کردم.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟