Как вызвать действие контроллера из Blade в Laravel 5.1?
Я пытаюсь вызвать действие контроллера в представлении в Laravel 5.1, но не могу этого сделать.
вот что я пробовал до сих пор:
<?php echo BridesController::getPhotographer($data->sender_id);?>
но это класс 'BridesController' не найден ошибка.
3 ответов
чтобы отобразить вывод внешнего действия внутри представления, принадлежащего текущему действию, вам нужно вызвать внешнее действие из текущего действия, а затем сохранить его вывод в переменную и передать его в текущее представление.
вызов действий от того же контроллера
Если действие, которое вы хотите отобразить, находится внутри того же контроллера, который вы используете, вы можете вызвать:
$result = $this->action();
return view('my.view',['my_rendered_action'=>$result]);
и затем, в вашем представлении, просто:
{!! $my_rendered_action !!}
береги не оказывает все, что исходит от пользователя, использующего этот метод, потому что {!! !!} теги не будут создавать опасные входные данные. Если вам не нужно иметь HTML внутри вашего ответа на действие, всегда предпочитайте использовать {{ }}.
вызов действий с другого контроллера
Если вам нужно разделить метод между более чем одним контроллером, самый чистый способ-создать признак или задание, которое реализует логику, а затем оба контроллера будут использовать признак или отправь ту же работу.
пожалуйста, обратитесь к ответ Шэдди на этот вопрос для получения дополнительной информации.
надеюсь, что это помогает. ;)
вы можете сделать это:
action('BridesController@getPhotographer',$data->sender_id);
конечно, если вы используете blade Вы можете сделать это
{{ action('BridesController@getPhotographer',$data->sender_id) }}
Вы можете проверить это здесь http://laravel.com/docs/5.1/controllers#basic-controllers
Если вы создаете свой собственный фасад, вы можете сделать это.
:namespace App\Http\Controllers;
use Illuminate\Support\Facades\Facade;
class BridesController extends Facade {
protected static function getFacadeAccessor() {
//what you want
return 'getPhotographer';
}
public static function getPhotographer() {
return "photographer";
}
}
/ / пусть это будет поставщик услуг.
config / app.в PHP
'BridesController'=> App\Http\Controllers\BridesController::class,
и затем вы можете использовать на ваш взгляд.
<div class="panel-body">
{{BridesController::getPhotographer()}}
</div>
Я не тестировал его, но я думаю, что это должно сработать.