Php Laravel表单请求:无法调用错误的方法 namespace App\Http\Requests; use App\Http\Requests\Request; class CreateCollectionRequest extends Request { public function authorize() { return true; } public function rules() { return [ 'label' => 'required|alpha_num|min:3|max:32', 'description' => 'alpha_dash|max:65000', 'parent_collection_id' => 'exists:collections,id' ]; } }

Php Laravel表单请求:无法调用错误的方法 namespace App\Http\Requests; use App\Http\Requests\Request; class CreateCollectionRequest extends Request { public function authorize() { return true; } public function rules() { return [ 'label' => 'required|alpha_num|min:3|max:32', 'description' => 'alpha_dash|max:65000', 'parent_collection_id' => 'exists:collections,id' ]; } },php,laravel,laravel-5,laravel-5.1,postman,Php,Laravel,Laravel 5,Laravel 5.1,Postman,当我将表单请求与Post方法一起使用时,响应是“index()”方法响应。但它必须是“存储(myRequest$request)”方法。 如果我从“store()”中删除myRequest$request方法,它就可以工作了。我迷路了,请帮帮我 我的控制器: <?php namespace App\Http\Controllers\Ressource; use App\Http\Requests\CreateCollectionRequest; use App\Repositories\

当我将表单请求与Post方法一起使用时,响应是“
index()
”方法响应。但它必须是“
存储(myRequest$request)
”方法。 如果我从“
store()
”中删除myRequest$request方法,它就可以工作了。我迷路了,请帮帮我

我的控制器:

<?php namespace App\Http\Controllers\Ressource;

use App\Http\Requests\CreateCollectionRequest;
use App\Repositories\CollectionRepository;

class CollectionController extends RessourceController {

    private $collectionRepository;

    public function __construct(CollectionRepository $collectionRepository)
    {
        parent::__construct();
        $this->collectionRepository = $collectionRepository;
    }

    public function index()
    {
        return $this->run( function()
        {
            return $this->collectionRepository->all()->get();
        });
    }

    public function store(CreateCollectionRequest $request)
    {
        return $this->run( function() use ($request) {
        return $this->collectionRepository->create($request->all());
        });
    }
}
从routes.php中提取:

Route::group(array('namespace' => 'Ressource', 'prefix' => 'ressource'), function () {
    Route::resource('collection', 'CollectionController', ['only' => ['index', 'show', 'store', 'update', 'destroy']]);
});
邮递员要求:

邮递员回复:


您应该使您的函数成为Clouse函数。 我的控制器:

<?php namespace App\Http\Controllers\Ressource;

use Illuminate\Support\Facades\Response;
use App\Http\Controllers\Controller;

abstract class RessourceController extends Controller
{
    protected $result = null;

    public function __construct()
    {
        $this->result = new \stdClass();
        $this->result->error = 0;
        $this->result->message = '';
        $this->result->service = $this->getService();
        $this->result->data = null;
    }

    abstract public function getService();

    protected function render()
    {
        return Response::json($this->result);
    }

    public function missingMethod($parameters = [])
    {
        $this->result->err = 404;
        $this->result->message = 'Service ' . $this->getService() . ' : ' . $parameters . ' non disponible';
        return $this->render();
    }

    protected function run($function)
    {
        try {
            $this->result->data = call_user_func($function);
        } catch (\Exception $e) {
            $this->result->err = ($e->getCode() > 0) ? $e->getCode() : -1;
            $this->result->message = $e->getMessage();
        }

        return $this->render();
    }
}
<?php namespace App\Http\Controllers\Ressource;

 use Illuminate\Support\Facades\Response;
 use App\Http\Controllers\Controller;
 use SuperClosure\Serializer;
 use Illuminate\Support\Str;
 use Closure;

abstract class RessourceController extends Controller
{
protected $result = null;

public function __construct()
{
    $this->result = new \stdClass();
    $this->result->error = 0;
    $this->result->message = '';
    $this->result->service = $this->getService();
    $this->result->data = null;
}

abstract public function getService();

protected function render()
{
    return Response::json($this->result);
}

public function missingMethod($parameters = [])
{
    $this->result->err = 404;
    $this->result->message = 'Service ' . $this->getService() . ' : ' . $parameters . ' non disponible';
    return $this->render();
}
protected function getCallable($callback)
{
    if (Str::contains($callback, 'SerializableClosure')) {
        return unserialize($callback)->getClosure();
    }

    return $callback;
}
protected function run($function)
{
    try {
        $this->result->data = call_user_func($this->getCallable($function));
    } catch (\Exception $e) {
        $this->result->err = ($e->getCode() > 0) ? $e->getCode() : -1;
        $this->result->message = $e->getMessage();
    }
    return $this->render();
}
}

资源控制器:

<?php namespace App\Http\Controllers\Ressource;

use Illuminate\Support\Facades\Response;
use App\Http\Controllers\Controller;

abstract class RessourceController extends Controller
{
    protected $result = null;

    public function __construct()
    {
        $this->result = new \stdClass();
        $this->result->error = 0;
        $this->result->message = '';
        $this->result->service = $this->getService();
        $this->result->data = null;
    }

    abstract public function getService();

    protected function render()
    {
        return Response::json($this->result);
    }

    public function missingMethod($parameters = [])
    {
        $this->result->err = 404;
        $this->result->message = 'Service ' . $this->getService() . ' : ' . $parameters . ' non disponible';
        return $this->render();
    }

    protected function run($function)
    {
        try {
            $this->result->data = call_user_func($function);
        } catch (\Exception $e) {
            $this->result->err = ($e->getCode() > 0) ? $e->getCode() : -1;
            $this->result->message = $e->getMessage();
        }

        return $this->render();
    }
}
<?php namespace App\Http\Controllers\Ressource;

 use Illuminate\Support\Facades\Response;
 use App\Http\Controllers\Controller;
 use SuperClosure\Serializer;
 use Illuminate\Support\Str;
 use Closure;

abstract class RessourceController extends Controller
{
protected $result = null;

public function __construct()
{
    $this->result = new \stdClass();
    $this->result->error = 0;
    $this->result->message = '';
    $this->result->service = $this->getService();
    $this->result->data = null;
}

abstract public function getService();

protected function render()
{
    return Response::json($this->result);
}

public function missingMethod($parameters = [])
{
    $this->result->err = 404;
    $this->result->message = 'Service ' . $this->getService() . ' : ' . $parameters . ' non disponible';
    return $this->render();
}
protected function getCallable($callback)
{
    if (Str::contains($callback, 'SerializableClosure')) {
        return unserialize($callback)->getClosure();
    }

    return $callback;
}
protected function run($function)
{
    try {
        $this->result->data = call_user_func($this->getCallable($function));
    } catch (\Exception $e) {
        $this->result->err = ($e->getCode() > 0) ? $e->getCode() : -1;
        $this->result->message = $e->getMessage();
    }
    return $this->render();
}

我希望这是解决方案,但是“
Str::contains($callback,'serializableconsal')
”返回一个错误:“
strpos()希望参数1是字符串,给定对象”
”我想我错过了库。请再查一下。我以前也遇到过类似的问题,这种方法可以帮助我。在buildCallable之后尝试var_dump variable$callback函数。我尝试了它,但它什么也没做。从未调用函数
buildCallable
。我认为这是因为
store(CreateCollectionRequest$request)
从未被调用过。如果函数
buildCallable
从未调用为什么会出现错误
strops()希望参数1是字符串,给定的对象