当前位置: 首页 > 知识库问答 >
问题:

从Laravel5中的另一个控制器访问控制器方法

戎洛华
2023-03-14

我有两个控制器SubmitPerformanceControllerPrintReportController

PrintReportController中,我有一个名为getPrintReport的方法。

如何在SubmitPerformanceController中访问此方法

共有1个答案

邓驰
2023-03-14

您可以像这样访问您的controller方法:

app('App\Http\Controllers\PrintReportController')->getPrintReport();

这是可行的,但从代码组织的角度来看,这是很糟糕的(记住要为printreportcontroller使用正确的名称空间)

您可以扩展PrintReportController,以便SubmitPerformanceController继承该方法

class SubmitPerformanceController extends PrintReportController {
     // ....
}

但这也将从printreportcontroller继承所有其他方法。

最好的方法是创建一个trait(例如在app/traits),在那里实现逻辑并告诉您的控制器使用它:

trait PrintReport {

    public function getPrintReport() {
        // .....
    }
}

告诉您的控制器使用此特性:

class PrintReportController extends Controller {
     use PrintReport;
}

class SubmitPerformanceController extends Controller {
     use PrintReport;
}

这两种解决方案都使SubmitPerformanceController具有GetPrintReport方法,因此您可以使用$this->GetPrintReport();从控制器内调用它,或者直接作为路由调用它(如果您在routes.php中映射了它)

你可以在这里阅读更多关于特质的内容。

 类似资料:
  • 我有两个控制器和。我正在读一本书的内容。来自的txt文件,我希望将该文本放置在的文本区域中。代码在中运行并读取良好,但当打开中的窗口时,从中读取的内容。文本内容在文本区域中不可见。我的显示String mine包含内容,但它不显示在的文本区域中。请帮助任何人。非常感谢。 FXMLDocumentController代码 在中,有一个我删除了和,这样代码就可以工作了。

  • 需要你的帮助!这可能是更多的设计角度,但我在我的应用程序中使用这个模式,所以想得到一个想法。 我的问题是直接或间接地从一个控制器访问另一个控制器。是否有任何优雅的设计方法来做到这一点,而不是在另一个控制器中保留一个控制器的引用。 提前致谢

  • 问题内容: 我需要从另一个控制器内的另一个控制器访问方法。我该怎么做?我可以使用方法吗? 我可以在当前控制器中包含该控制器,并使其成为对象并通过该对象访问该方法吗?这样可以吗? 我想调用另一个控制器的表单方法— newAction。 问题答案: 您可以将控制器定义为服务,然后在另一个控制器中获取它。 在定义所需的控制器即服务中: 然后,在任何控制器中,您都可以通过容器获取此服务: 在文档中有一些关

  • 问题内容: 为什么无法从另一个内部访问其他控制器方法呢? 像这样。 已编译 如果您不能这样做,那为什么不呢?我还应该怎么做… 问题答案: 最近几个小时遇到相同的问题。我使用了api / services文件夹。它可能不完全是您所需要的,但是它是一个选择。

  • 有没有减少代码冗余的方法?

  • 和访问字段,如: 因为我希望有更好的方法来做到这一点。