Сбой условного маршрута в уведомлении по электронной почте в Laravel

#laravel

#laravel

Вопрос:

Я пытаюсь отправить уведомление по электронной почте на основе условия на другой маршрут

 $employeerespondents = AppraisalRespondent::select('id','respondent_id','respondent_email', 'fullname')->where('employee_id', $userEmployee)->where('appraisal_identity_id', $identities->id)->where('email_sent',0)->where('is_active',1)->get();

                foreach ($employeerespondents as $employeerespondent)
                {        
                    $details = [
                        'sent_to' => $employeerespondent->respondent_id,
                        'sent_by' => $userId,
                        'user_id' => $userId,
                        'review_periond' => $reviewperiod,
                        'employee_respondent_email' => $employeerespondent->respondent_email,
                        'actionText' => 'View Multi-Source Feedback Form',
  'actionURL' => $employeerespondent->is_internal === 0 ? url('http://localhost:8888/myapp/appraisal/appraisal_msfs/create', ['id'=>$employeerespondent->id]) : url('http://localhost:8888/myapp/appraisal/appraisal_msf_externals/create', ['id'=>$employeerespondent->id]),
                        'notification_type' => 'MSF Request',
                        
                    ];
                      
                    Notification::route('mail', $details['employee_respondent_email'])
                                ->notify(new AppNotificationsAppraisalAppraisalRespondentSubmit($details));

                }  
  

Я использую if is_internal === 0, затем для

 url('http://localhost:8888/myapp/appraisal/appraisal_msfs/create', ['id'=>$employeerespondent->id])
  

ещё

 url('http://localhost:8888/myapp/appraisal/appraisal_msf_externals/create', ['id'=>$employeerespondent->id])
  

Но, к удивлению, когда я отправил, я вижу этот маршрут в своем URL-адресе brouzer без параметра

http://localhost:8888/myapp/appraisal/appraisal_msf_externals/create

и я получил эту ошибку:

404 не найдено. К сожалению, страница, которую вы ищете, не найдена.

Как мне это решить?

Спасибо

Ответ №1:

route() И action() вспомогательные методы Laravel поддерживают параметры URL. url() Вспомогательный метод не позволяет вам сделать это таким образом.

Поэтому вам, возможно, потребуется выполнить любое из приведенных ниже действий.

 route('yourRoute.name', ['id'=>$employeerespondent->id]);
  

или

 action('YourController@method', ['id'=>$employeerespondent->id]);
  

И вы использовали is_internal === 0 это означает, что оно должно было иметь одинаковое значение и тип, вы либо меняете на is_internal == 0 , либо выполняете cast в своей модели.

     protected $casts = [
        'is_internal' => 'integer',
    ];
  

Комментарии:

1. Теперь он содержит параметр parries. Но все по-прежнему идет к appraisal_msf_externals , какое значение is_internal === 0 : > localhost:8888/myapp/appraisal/appraisal_msf_externals/создать/… Теперь у меня есть эта ошибка: > 500 Внутренняя ошибка сервера. Произошла внутренняя ошибка сервера. Если ошибка повторяется, пожалуйста, свяжитесь с администратором. Вернитесь

2. Теперь все содержит localhost:8888/myapp/appraisal/appraisal_msfs/create {id} Теперь у него есть параметр, например, 16,17 и т.д. Но все идет по одному и тому же URL.. Но сообщения об ошибке нет. Ни один из них не отправляется во внешний. Почему

3. @mikefolu можете ли вы сделать dd($employeerespondents->pluck(is_internal)) и показать мне результат?