我试图在Laravel 5.1中调用视图中的控制器操作,但无法执行此操作。
这是我到目前为止所尝试的内容:
<?php echo BridesController::getPhotographer($data->sender_id);?>
但它正在提供 Class&#39; BridesController&#39;找不到错误。
答案 0 :(得分:8)
要在属于当前操作的视图中呈现外部操作输出,您需要从当前操作调用外部操作,然后将其输出存储到变量并将其传递给当前视图。
如果您要渲染的动作位于您正在使用的同一个控制器内,您可以调用:
$result = $this->action();
return view('my.view',['my_rendered_action'=>$result]);
然后,在你的观点中,只是:
{!! $my_rendered_action !!}
使用此方法处理不呈现来自用户的任何内容,因为{!! !!}标签赢得了危险的输入。如果您不需要在操作响应中包含HTML,请务必使用{{}}代替。
如果您需要在多个控制器之间共享方法,最简单的方法是创建一个特征或实现逻辑的作业,然后两个控制器都将使用特征或调度相同的作业。
有关详细信息,请参阅Shaddy's answer to this question。
希望它有所帮助。 ;)
答案 1 :(得分:4)
你可以这样做:
action('BridesController@getPhotographer',$data->sender_id);
当然,如果你使用刀片,你可以这样做
{{ action('BridesController@getPhotographer',$data->sender_id) }}
你可以在这里查看 http://laravel.com/docs/5.1/controllers#basic-controllers
答案 2 :(得分:2)
如果您创建自己的外观,则可以执行此操作。
控制器:
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";
}
}
//可能是服务提供商。
配置/ app.php
'BridesController'=> App\Http\Controllers\BridesController::class,
然后你可以在你的视图中使用。
<div class="panel-body">
{{BridesController::getPhotographer()}}
</div>
我还没有对它进行测试,但我认为这应该可行。