Laravel 5.1 如何在Laravel 5.1中从刀片调用控制器操作?
我试图在Laravel 5.1中调用视图中的控制器操作,但无法执行此操作 以下是我迄今为止所尝试的:Laravel 5.1 如何在Laravel 5.1中从刀片调用控制器操作?,laravel-5.1,Laravel 5.1,我试图在Laravel 5.1中调用视图中的控制器操作,但无法执行此操作 以下是我迄今为止所尝试的: <?php echo BridesController::getPhotographer($data->sender_id);?> 但它给出了“未找到BridesController”类的错误。若要在属于当前操作的视图中呈现外部操作输出,需要从当前操作调用外部操作,然后将其输出存储到变量并将其传递到当前视图 从同一控制器调用操作 如果要渲染的操作位于正在使用的同一控制器内
<?php echo BridesController::getPhotographer($data->sender_id);?>
但它给出了“未找到BridesController”类的错误。若要在属于当前操作的视图中呈现外部操作输出,需要从当前操作调用外部操作,然后将其输出存储到变量并将其传递到当前视图 从同一控制器调用操作 如果要渲染的操作位于正在使用的同一控制器内,则可以调用:
$result = $this->action();
return view('my.view',['my_rendered_action'=>$result]);
然后,在您的视图中,只需:
{!! $my_rendered_action !!}
注意不要渲染使用此方法的用户提供的任何内容,因为{!!!!}标记不会替换危险的输入。如果您不需要在操作响应中包含HTML,请始终使用{{}
从另一个控制器调用操作
如果您需要在多个控制器之间共享一个方法,最干净的方法是创建一个trait或一个实现该逻辑的作业,然后两个控制器都将使用该trait或分派相同的作业
有关更多信息,请参阅
希望有帮助 如果您创建自己的外观,您可以这样做 控制器:
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>
{{BridesController::get摄影师()}}
我还没有测试过它,但我认为它应该可以工作。您可以这样做:
action('BridesController@getPhotographer',$data->sender_id);
当然,若你们使用的是刀片,你们可以做到这一点
{{ action('BridesController@getPhotographer',$data->sender_id) }}
你可以在这里查一下
您想要实现的目标是什么?当然,还有比从视图执行控制器更好的方法。我在Laravel5.4中尝试了路由解决方案,但结果只是url路径,而不是视图。例如当我调用{{action('page.listAll')}时,结果是“”。如何呈现从操作返回的视图?路由解决方案被标记为“旧答案”,因为它正在打印URL。为了清晰起见,我现在编辑了文本以删除其旧版本。要渲染视图,需要在渲染之前将其存储在变量中。请重新阅读答案(我想现在更清楚了)。