我有两个控制器SubmitPerformanceController
和PrintReportController
。
在PrintReportController
中,我有一个名为getPrintReport
的方法。
如何在SubmitPerformanceController
中访问此方法?
您可以像这样访问您的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文件夹。它可能不完全是您所需要的,但是它是一个选择。
有没有减少代码冗余的方法?
和访问字段,如: 因为我希望有更好的方法来做到这一点。