immagino dovrai estendere anche RequestForm
. Uso la caratteristica per evitare la duplicazione del codice. Il codice sottostante è rilevante per Laravel 5.3.
app/Http/ExtendRequestTrait.php
<?php
namespace App\Http\ExtendRequestTrait;
trait ExtendRequestTrait {
methodFoo(){}
methodBar(){}
}
app/Http/Request.php
<?php
namespace App\Http;
use Illuminate\Http\Request as BaseRequest;
class Request extend BasicRequest {
use ExtendRequestTrait;
}
app/Http/FormRequest.php
<?php
namespace App\Http;
use Illuminate\Foundation\Http\FormRequest as BaseFormRequest;
class FormRequest extend BasicFormRequest {
use ExtendRequestTrait;
}
Per la prova phpunit di lavoro si dovrà eseguire l'override call
metodo per rendere utilizzando giusto Request
classi qui Request::create
.
test/TestCase.php
<?php
use App\Http\Request;
abstract class TestCase extends Illuminate\Foundation\Testing\TestCase{
// just copy Illuminate\Foundation\Testing\TestCase `call` method
// and set right Request class
public function call($method, $uri, $parameters = [], $cookies = [], $files = [], $server = [], $content = null)
{
$kernel = $this->app->make('Illuminate\Contracts\Http\Kernel');
$this->currentUri = $this->prepareUrlForRequest($uri);
$this->resetPageContext();
$request = Request::create(
$this->currentUri, $method, $parameters,
$cookies, $files,
array_replace($this->serverVariables, $server),
$content
);
$response = $kernel->handle($request);
$kernel->terminate($request, $response);
return $this->response = $response;
}
}
e non dimenticate di passare Illuminate\Http\Request::capture()
-App\Http\Request::capture()
in public/index.php
di file e di aggiungere $app->alias('request', 'App\Http\Request');
dopo o all'interno $app = require_once __DIR__.'/../bootstrap/app.php';
fonte
2016-09-27 22:04:51
Cosa stai cercando di realizzare? Perché vorresti sostituirlo con il tuo? –
Sto lavorando a un pacchetto su GH atm - https://github.com/echo-it/laravel-jsonapi. È possibile vedere dal readme che hanno definito la propria richiesta, ma c'è così tanto codice ridondante in cui lo stanno compilando con le informazioni della richiesta principale. In realtà ho praticamente funzionante - aggiornando l'intance della richiesta nell'index.php - ma questo non sembra corretto. Inoltre, non funziona con i test delle unità. – ninjapenguin
Penso che dipenda dai metodi che stai tentando di sovrascrivere, ad es. metodo json. È possibile estendere 'Illuminate \ Http \ Request' e creare una facciata – Digitlimit