【问题标题】:Call a controller function into a view将控制器函数调用到视图中
【发布时间】:2017-04-15 23:53:06
【问题描述】:

我有一个带有功能的控制器(UsersController):

 public function project_donated($project_id)
{
    return Donation
        ::groupBy('donations.project_id')
        ->selectRaw('sum(donations.amount) as sum, donations.project_id, projects.*')
        ->where('donations.project_id', $project_id)
        ->join('projects', 'donations.project_id', '=', 'projects.id')
        ->get()
        ->toArray();
}

这个功能很好用。

我将此函数返回到同一个 UserController 到我的视图中:

$project_donated = $this->project_donated($project_id);
return view('users.show', compact('user', 'countries', 'donation_user' , 'user_donated', 'project_donated'));

但是,我无法将 $project_id 定义到我的控制器中,我需要将它指定到我的视图中,所以在我的视图中,我有这一行:

<?php
$project_id = $ngo->project->ngo->id;
$project_donated = UsersController::project_donated($project_id);
?>

但我有一个错误:找不到类“UsersController”。

我不确定我的做法是否正确。

【问题讨论】:

  • 首先应该是UserController,而不是UsersController。另外,你做错了,所以建议你先阅读 Laravel 文档。至少了解一下控制器、路由和视图。
  • 是的,我认为这是错误的方法。我要从别人那里收回。但是你能快速解释一下我在这种情况下做错了什么吗?
  • 这不是控制器的使用方法。不应从视图内部调用它。

标签: php laravel laravel-5 laravel-5.4


【解决方案1】:

您可以从应用程序中的任何位置调用控制器。但这不是一般的做法。了解一些一般做法。

 App::make('controller name')->public_methodName(params);

在下面的帖子中提出了类似的问题。

How to call a controller from within a view - Laravel

希望这会有所帮助。 :)

【讨论】:

  • 所以直接在视图中调用函数不是一个好习惯?
  • 是的,当您使用 MVC 框架时,做一些违反 MVC 规则的事情并不是一个好习惯
  • 是的。这不是普遍接受的做法,而且在修改代码时会更加困难。
猜你喜欢
  • 2017-03-12
  • 1970-01-01
  • 1970-01-01
  • 2013-09-14
  • 1970-01-01
  • 2014-10-30
  • 2015-03-24
  • 1970-01-01
  • 2016-06-10
相关资源
最近更新 更多