如何在Laravel 5中的另一个控制器中调用控制器功能

时间:2015-08-11 18:09:21

标签: laravel

我正在使用laravel 5.

我需要调用控制器函数,但这应该在另一个控制器中完成。

我不知道该怎么做

public function examplefunction(){

   //stuff

}

我有这个功能的路线,所以在

public function otherfunctioninothercontroller(){
// I need examplefunction here
}

我怎么能这样做?

4 个答案:

答案 0 :(得分:5)

1)第一种方式

use App\Http\Controllers\OtherController;

class TestController extends Controller
{
    public function index()
    {
        //Calling a method that is from the OtherController
        $result = (new OtherController)->method();
    }
}

2) Second way

app('App\Http\Controllers\OtherController')->method();

Both way you can get another controller function.

答案 1 :(得分:2)

如果它们不在同一个文件夹中,请将use namespace\to\ExampleClass;放在文件的顶部,然后就可以实例化控制器了。

答案 2 :(得分:1)

我们说我有Controller1和Controller2。我想从放置在Controller2中的函数内部调用Controller1的函数。

/**
 * Gets the meatball icon for a nincompoop.
 * 
 * <p>
 * Example: <code> &lt;custom:meatball color="<%= Meatball.RED %> nincompoop="${person}" /></code>
 * 
 * @author King Cong
 * 
 */

在另一个控制器上:

// Controller1.php
class Controller1 {
    public static function f1()
    {

    }
}

要点:

  1. f1()声明为静态

答案 3 :(得分:0)

从另一个控制器内部调用一个控制器是一个坏主意。这样就没有控制器的意义了。您应该重定向到web.php以保存安全的整个体系结构,如下所示:

class MyController {
  public function aSwitchCaseFunction(Request $requestPrm){
    ...
    //getting path string from request here
    ...
    switch($myCase){
        case CASE_1:
             return redirect()->route('/a/route/path');
        ....
    }
  }
}