Wie verwende ich eine Methode in einem Controller in Laravel, um eine Methode in einem anderen Controller aufzurufen?
仅有的幸福
仅有的幸福 2017-05-16 16:47:42
0
6
783

Was soll ich tun, wenn eine Methode in einem Controller in Laravel eine Methode in einem anderen Controller aufrufen möchte?

Zum Beispiel:
AaaController.php

<?php

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

class AaaController extends Controller
{
    public function aaa()
    {
        //...
    }
}

BbbController.php

<?php

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

class BbbController extends Controller
{
    public function bbb()
    {
        //这里要调用aaa(),应该怎么做?
    }
}

Wie soll die bbb()-Methode in BbbController die aaa()-Methode in AaaController aufrufen?

仅有的幸福
仅有的幸福

Antworte allen(6)
巴扎黑

这说明你没有把aaa方法中的逻辑提取出来, orm可以放在Repository, 逻辑操作可以放在service中

洪涛

通常是不建议这么做的。

$ctrl = \App::make(\App\Http\Controllers\AaaController::class);
\App::call([$ctrl, "aaa"]);

为什么要这么复杂而不是直接new一个AaaController然后直接调用方法?因为要处理依赖注入。

PHPzhong

在B控制器里创建一个A控制器的实例
这么用是可以用,但是我不知道这么用合不合规矩

PHPzhong

(new AaaController ())->aaa();

迷茫

你可以建一个BaseController,其他两个congtroller共同继承这个controller,一些公用方法可以放置到BaseController里面,或者加个helper文件

大家讲道理

如果你非要这么做的话,可以把被调用的方法定义成静态方法。然后类名直接调用。不过很不建议这么做

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage