Я добавляю и редактирую пользователя с той же функцией (Магазин), когда я добавляю пользователя, он запрашивает у меня изображение, но всякий раз, когда я редактирую пользователя, у которого есть изображение, он также спрашивает, требуется ли изображение, и я хочу, если изображение уже есть Представьте, что меня не спросят, пожалуйста, посмотрите мой код выше, я недавно изменил свой код в соответствии с Gurpal Singh
In my controller
public function rules()
{
$child_details = Children::findOrFail($inputs['id']);
$rules = [
'child_name' => 'required',
'gender' => 'required',
'dob' => 'required',
'current_class' => 'required',
'b_group' => 'required',
'm_tongue' => 'required',
'image' => 'image',
];
if ($child_details->notHavingImageInDb()){
$rules['image'] = 'required|image';
}
return $rules;
}
public function Postchild(Request $request)
{
$data = \Input::except(array('_token')) ;
$validator = \Validator::make($data,$rules);
$inputs = $request->all();
if ($validator->fails())
{
return redirect()->back()->withInput()->withErrors($validator->messages());
}
if (!empty($inputs['id'])){
$child_details = Children::findOrFail($inputs['id']);
}else{
$child_details = new Children;
}
$child_details->parent_id = Auth::User()->id;
$child_details->child_name = $inputs['child_name'];
$child_image = $request->file('image');
if ($child_image){
$tmpFilePath = 'uploads/childrens/';
$extension = $child_image->getClientOriginalExtension();
$hardPath = str_slug($inputs['child_name'], '-').'-'.md5(time());
$img = Image::make($child_image);
//$img->resize(180)->save($tmpFilePath.$hardPath.'-b.jpg');
$img->fit(250, 250)->save($tmpFilePath.$hardPath.'.'.$extension);
$child_details->image = $hardPath.'.'.$extension;
}
$child_details->save();
if (!empty($inputs['id'])){
return \Redirect()->route('child_list')->with('success', 'Child has been updated');
}else{
return \Redirect()->route('child_list')->with('success', 'Child has been added');
}
}





Обычно вы можете сделать следующее:
$rule = array(
'name' => 'required',
);
if (!empty($inputs['id'])) {
$user = User::findOrFail($inputs['id']);
} else {
$rule["image"] = "required";
$user = new User;
}
сделано, как вы сказали, но когда я добавляю нового пользователя, он не запрашивает у меня требуемое изображение
Я хочу, чтобы изображение требовалось при добавлении нового пользователя и при редактировании, если у пользователя есть изображение, в нем не требуется проверка изображения
Вы можете использовать правила условного добавления, не имея изображения в базе данных
Add this in model
public function notHavingImageInDb()
{
return (empty($this->image))?true:false;
}
Это запрос правила проверки
public function rules()
{
$user = User::find(Auth::id());
$rules = [
'name' =>'required|max:100',
'image' =>'image',
];
if ($user->notHavingImageInDb()){
$rules['image'] = 'required|image';
}
return $rules;
}
Не забудьте импортировать аутентификацию и модель пользователя т.е.
use App\User;
use Auth;
подробнее нажмите здесь
где я должен добавить код общедоступной функции rules () в мою пользовательскую модель ??
Это обычный почтовый запрос, в который вы хотите отправить почтовый запрос.
Могу ли я использовать его над моей почтовой функцией
Как вы сказали, я сделал, проверьте, пожалуйста, мой вопрос выше, я получаю неопределенную ошибку правил переменной
какая у вас версия laravel?
Лучше их разделить или просто создать другую функцию. Но вы можете поставить оператор if, который указывает, есть ли изображение в запросе или нет.
Нравится:
if (! isset($data['image'])){ //if the image is not in the request
//Your code
}
else{ //if the image is in the request
//Your code
}
Если вам нужен код для хранения, переименования, перемещения изображения, не стесняйтесь запрашивать.
Моя версия laravel - 5.2
не могли бы вы прислать мне код на [email protected]
проверить свой почтовый ящик
Спасибо .. я попробую, как вы сказали
Вы можете использовать хук проверки после.
public function Postchild(Request $request)
{
//Define your rules
$rules = [
'child_name' => 'required',
'gender' => 'required',
'dob' => 'required',
'current_class' => 'required',
'b_group' => 'required',
'm_tongue' => 'required',
];
//Validate your data
$data = $request->except('_token');
$validator = \Validator::make($data,$rules);
$validator->after(function ($validator) {
//Check the mode of request (Create or Update)
if (!empty($data['id'])){
$child_details = Children::findOrFail($data['id']);
if ($child_details->image == null){
$validator->errors()->add('image', 'Image field is required');
}
}
});
if ($validator->fails()) {
return redirect()->back()
->withErrors($validator)
->withInput();
}
}
Только эти несколько строк могут решить ваши проблемы ... Вы должны проверить, есть ли изображение.
Правила в частной или защищенной функции
private function validateRequest($request)
{
//This is for Update without required image, this will check that In DB image have or not
$child_image = Children::find($request->id);
$rules = [];
if ($child_image) :
if ($child_image->image == null):
$rules['image'] = 'required|image|max:1999';
endif;
//This is for regular validation
else :
$rules = [
'image' => 'required|image|max:1999',
];
endif;
return $rules;
}
У меня такая же проблема, требуется изображение .. после подачи заявки, как вы сказали