是否有Laravel方法来获取具有查询参数的Request的当前路径?
例如,对于URL:
http://www.example.com/one/two?key=value
Run Code Online (Sandbox Code Playgroud)
Request::getPathInfo()会回来的/one/two.
Request::url()会回来的http://www.example.com/one/two.
期望的输出是/one/two?key=value.
我想验证"表单请求"中的路由参数,但不知道如何操作.
下面是代码示例,我正在尝试:
路线
// controller Server
Route::group(['prefix' => 'server'], function(){
Route::get('checkToken/{token}',['as'=>'checkKey','uses'=> 'ServerController@checkToken']);
});
Run Code Online (Sandbox Code Playgroud)
调节器
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Http\Requests;
class ServerController extends Controller {
public function checkToken( \App\Http\Requests\CheckTokenServerRequest $request) // OT: - why I have to set full path to work??
{
$token = Token::where('token', '=', $request->token)->first();
$dt = new DateTime;
$token->executed_at = $dt->format('m-d-y H:i:s');
$token->save();
return response()->json(json_decode($token->json),200);
}
}
Run Code Online (Sandbox Code Playgroud)
CheckTokenServerRequest
namespace App\Http\Requests;
use App\Http\Requests\Request;
class CheckTokenServerRequest extends Request {
//autorization
/**
* Get the validation rules …Run Code Online (Sandbox Code Playgroud) 我知道可以在Laravel中使用$request->get('my_param')或Input::get('my_param')获取POST或GET请求参数(我现在正在使用v5/dev版本,但对于4.2来说它是相同的).
但是,如何my_param通过POST参数确保我的来自并且不仅仅来自?my_param=42附加到URL?(除了恢复到ol' $_POST和$_GET超级全局并将可测试性抛出窗外)
(注意:我也知道该Request::get方法将为POST请求提供POST参数,如果POST和具有相同名称的URL/GET参数都存在,但是......但是如果参数通过url查询字符串登陆相反,我想用一种Laravel惯用法来了解这一点)
我有以下代码,
我的问题是如何修改Request值?
public function store(CategoryRequest $request)
{
try {
$request['slug'] = str_slug($request['name'], '_');
if ($request->file('image')->isValid()) {
$file = $request->file('image');
$destinationPath = public_path('images/category_images');
$fileName = str_random('16') . '.' . $file->getClientOriginalExtension();
$request->image = $fileName;
echo $request['image'];
$file->move($destinationPath, $fileName);
Category::create($request->all());
return redirect('category');
}
} catch (FileException $exception) {
throw $exception;
}
}
Run Code Online (Sandbox Code Playgroud)
但,
在每个请求输出
echo $request['image'];
Run Code Online (Sandbox Code Playgroud)
输出一些文本,如/ tmp/phpDPTsIn
我目前有一个具有文本字段和段塞字段的模型.
我验证了slug在我的表单请求类中是唯一的:
public function rules()
{
return [
'name' => 'required|min:3',
'slug' => 'required|alpha_dash|unique:questions'
];
}
Run Code Online (Sandbox Code Playgroud)
这在创建时工作正常,并且正确地拒绝创建重复的slugs.但是在我的更新方法中,它不会让我保存记录,因为slug已经存在.当然slug确实存在,但它存在于正在编辑的记录中,所以我想继续允许它被保存.但是,它不应该被改为另一个记录上的slu ..
这是我的更新ArticlesController方法的样子:
public function update(Article $article, ArticleRequest $request)
{
$article->update($request->all());
return redirect('articles');
}
Run Code Online (Sandbox Code Playgroud)
有没有办法让这个工作在L5?
我正在制作一个API,我希望返回错误数组,格式为$validator->errors();我通过手动方式验证请求时生成的格式.但我不能操纵回应.我想找到正确的方法来实现它.
这可以在Laravel 5.4中使用该formatErrors方法完成,并Illuminate\Contracts\Validation\Validator在FormRequest类中包含类,但对于版本5.5,它不起作用.我不知道怎么做.
这是我的控制器:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests\ProductRequest;
use Illuminate\Validation\Rule;
use App\Product;
class ProductController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index(ProductRequest $request)
{
$products = Product::where('code', 'LIKE', '%'.$request->input('search').'%')
->where('name', 'LIKE', '%'.$request->input('search').'%')
->paginate(10);
$products->withPath($request->fullUrl());
return $products;
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
}
/**
* Store …Run Code Online (Sandbox Code Playgroud) laravel laravel-validation laravel-request laravel-response laravel-5.5
我在Request类中有以下代码来检查用户是否有权执行更新.
HandlesAuthorization trait,默认情况下给出默认消息.有没有办法返回自定义消息?我看到在授权方法Request class可以return boolean只值.
class UpdateRoleRequest extends Request
{
private $UserPermissionsSession;
public function __construct(IRole $Role) {
$this->UserPermissionsSession = new UserPermissionsSession();
}
public function authorize() {
$UserID = \Auth::user()->UserID;
return $this->UserPermissionsSession->CheckPermissionExists($UserID);
}
}
Run Code Online (Sandbox Code Playgroud) laravel laravel-5 laravel-request laravel-authorization laravel-5.5
在其他MVC框架中,访问当前请求对象就像一样简单$this->request。但是,在Laravel中,我通常会看到Request $request通常将其注入到每个动作(public function edit($id, Request $request))中。看起来像样板。有没有更好的方法来访问请求?(我现在可以使用继承来使用$this->request,我正在寻找Laravel的方法。)
我发现app('request')我可以使用当前请求。但是,我不确定它的潜在优缺点。
我正在尝试使用Laravel验证来生成自定义错误消息,但是我无法找到我应该重写的函数.
Route:POST:/entries/用于执行验证的EntryController@store用途EntryStoreRequest.
EntryStoreRequest
namespace App\Api\V1\Requests;
class EntryStoreRequest extends ApiRequest
{
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'message' => [
'string',
'required',
'max:65535',
],
'code' => [
'string',
'max:255',
'nullable'
],
'file' => [
'string',
'max:255',
'nullable'
],
'line' => [
'string',
'max:255',
'nullable'
],
'stack' => [
'string',
'max:65535',
'nullable'
]
];
}
}
Run Code Online (Sandbox Code Playgroud)
ApiRequest
namespace App\Api\V1\Requests;
use …Run Code Online (Sandbox Code Playgroud) laravel laravel-5 laravel-request laravel-response laravel-5.5
我创建了一个ClientStoreRequest使用以下代码命名的自定义表单请求:
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class ClientStoreRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
// return $this->user()->can('add-clients');
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'name' => 'required|unique:clients|max:255',
'website' => 'required|url',
'street' => 'required',
'town' => 'required',
'postcode' => 'required|max:8',
'county' => 'required', …Run Code Online (Sandbox Code Playgroud) laravel-request ×10
laravel ×9
laravel-5 ×8
php ×5
laravel-5.5 ×3
http-post ×1
laravel-5.8 ×1
routes ×1