Làm cách nào tôi có thể xác định trường nào sẽ được gửi vào bộ điều khiển, nếu tôi đang sử dụng yêu cầu gửi bài bình thường?
và trong Ajax, nó không hoạt động với tôi, tôi không biết tại sao
đây là mã ajax của tôi
// Ajax post requests
var submitAjaxRequest = function[e]{
e.preventDefault[];
var form = $[this];
if[ $[form].valid[]] {
$['#loader'].show[];
$[":submit"].attr["disabled", true];
}
var method = form.find['input[name="_method"]'].val[] || "POST";
var _token = $[ '#myToken'].attr['value'];
var hotel_name = $[ '#hotel_name' ].val[];
var hotel_details = $[ '#hotel_details' ].val[];
var hotel_website = $[ '#hotel_website' ].val[];
var rank = $[ '#rank' ].val[];
var single_price = $[ '#single_price' ].val[];
var double_price = $[ '#double_price' ].val[];
var extra_bed_price = $[ '#extra_bed_price' ].val[];
var facilities = $[ '#facilities' ].val[];
var city_id = $[ '#city' ].val[];
//if[ $[form].valid[]]{
$.ajax[{
type: method,
url: form.prop['action'],
//data: form.serialize[], // like Eloquent NOT ALL inputs
data: {
_token: _token,
name: hotel_name,
details: hotel_details,
website: hotel_website,
rank: rank,
single_price: single_price,
double_price: single_price,
extra_bed_price:extra_bed_price,
facilities: facilities,
city_id: city_id
},
success : function []
{
$['#loader'].hide[];
$[":submit"].attr["disabled", false];
}
}];
//}
return false;
};
$[ 'form[data-remote]' ].on[ 'submit',submitAjaxRequest ];
và đối với các mã khác, vui lòng xem liên kết này https. // stackoverflow. com/câu hỏi/28874134/form-submit-input
Với lớp trên, bạn sẽ có thể tìm nạp đầu vào, cookie và tệp từ các yêu cầu HTTP. Bây giờ hãy xem xét các hình thức sau đây -
Để có được tất cả các chi tiết từ yêu cầu HTTP, bạn có thể làm như sau -
ví dụ 1
Sử dụng phương thức $request->all[]
Nhập các chi tiết vào biểu mẫu như hình dưới đây -
Sau khi bạn gửi, nó sẽ lấy tất cả dữ liệu đầu vào và trả về một mảng có dữ liệu
public function validateform[Request $request] { $input = $request->all[]; print_r[$input]; }
đầu ra
Đầu ra của đoạn mã trên là -
Array [ [_token] => 367OQ9dozmWlnhu6sSs9IvHN7XWa6YKpSnnWrBXx [name] => Rasika Desai [email] => rasika@gmail.com [age] => 20 [address] => Pune ]
ví dụ 2
Sử dụng phương thức $request->collect[]
Phương thức này sẽ trả về dữ liệu dưới dạng tập hợp
public function validateform[Request $request] { $input = $request->collect[]; print_r[$input]; }
đầu ra
Đầu ra của đoạn mã trên là -
Illuminate\Support\Collection Object [ [items:protected] => Array[ [_token] => 367OQ9dozmWlnhu6sSs9IvHN7XWa6YKpSnnWrBXx [name] => Rasika Desai [email] => rasika@gmail.com [age] => 20 [address] => Pune ] [escapeWhenCastingToString:protected] => ]
ví dụ 3
Sử dụng phương thức $request->getContent[]
Phương thức này cho đầu ra dưới dạng chuỗi truy vấn URL, dữ liệu được truyền trong cặp khóa/giá trị
public function validateform[Request $request] { $input = $request->getContent[]; echo $input; }
đầu ra
Đầu ra của đoạn mã trên là
_token=367OQ9dozmWlnhu6sSs9IvHN7XWa6YKpSnnWrBXx&name=Rasika+Desai&email=rasika%40gmail.com&age=20&address=Pune
Ví dụ 4
sử dụng php. //đầu vào
Điều này sẽ trả về dữ liệu đến từ trường đầu vào trong chuỗi truy vấn URL
$data = file_get_contents['php://input']; print_r[$data];
đầu ra
Đầu ra của đoạn mã trên là -
_token=367OQ9dozmWlnhu6sSs9IvHN7XWa6YKpSnnWrBXx&name=Rasika+Desai&email=rasika%40gmail.com&age=20&address=Pune
Để có được một thể hiện của yêu cầu HTTP hiện tại thông qua phép nội xạ phụ thuộc, bạn nên gõ gợi ý lớp
if [$request->is['admin/*']] {
1 trên hàm tạo hoặc phương thức điều khiển của bạn. Phiên bản yêu cầu hiện tại sẽ tự động được đưa vào bởi bộ chứa dịch vụnamespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
class UserController extends Controller
public function store[Request $request]
$name = $request->input['name'];
Nếu phương thức điều khiển của bạn cũng đang mong đợi đầu vào từ một tham số tuyến đường, chỉ cần liệt kê các đối số tuyến đường của bạn sau các phụ thuộc khác của bạn. Ví dụ: nếu tuyến đường của bạn được xác định như vậy
Bạn vẫn có thể nhập gợi ý
if [$request->is['admin/*']] {
1 và truy cập tham số tuyến đường của mình if [$request->is['admin/*']] {
3 bằng cách xác định phương thức điều khiển của bạn như saunamespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
class UserController extends Controller
* Update the specified user.
public function update[Request $request, $id]
Thông tin yêu cầu cơ bản
Phiên bản
if [$request->is['admin/*']] {
1 cung cấp nhiều phương thức để kiểm tra yêu cầu HTTP cho ứng dụng của bạn. Laravel if [$request->is['admin/*']] {
1 mở rộng lớp if [$request->is['admin/*']] {
6. Dưới đây là một vài phương thức hữu ích có sẵn trên lớp nàyTruy xuất URI yêu cầu
Phương thức
if [$request->is['admin/*']] {
7 trả về URI của yêu cầu. Vì vậy, nếu yêu cầu đến được nhắm mục tiêu vào if [$request->is['admin/*']] {
8, phương thức if [$request->is['admin/*']] {
7 sẽ trả về $method = $request->method[];
if [$request->isMethod['post']] {
0Phương pháp
$method = $request->method[];
if [$request->isMethod['post']] {
1 cho phép bạn xác minh rằng URI yêu cầu đến khớp với một mẫu nhất định. Bạn có thể sử dụng ký tự $method = $request->method[];
if [$request->isMethod['post']] {
2 làm ký tự đại diện khi sử dụng phương pháp nàyif [$request->is['admin/*']] {
Để có được URL đầy đủ, không chỉ thông tin đường dẫn, bạn có thể sử dụng phương thức
$method = $request->method[];
if [$request->isMethod['post']] {
3 trong trường hợp yêu cầuTruy xuất phương thức yêu cầu
Phương thức
$method = $request->method[];
if [$request->isMethod['post']] {
4 sẽ trả về động từ HTTP cho yêu cầu. Bạn cũng có thể sử dụng phương thức $method = $request->method[];
if [$request->isMethod['post']] {
5 để xác minh rằng động từ HTTP khớp với một chuỗi đã cho$method = $request->method[];
if [$request->isMethod['post']] {
Yêu cầu PSR-7
Tiêu chuẩn PSR-7 chỉ định các giao diện cho các thông báo HTTP, bao gồm các yêu cầu và phản hồi. Nếu bạn muốn lấy một phiên bản của yêu cầu PSR-7, trước tiên bạn cần cài đặt một số thư viện. Laravel sử dụng thành phần Symfony HTTP Message Bridge để chuyển đổi các yêu cầu và phản hồi điển hình của Laravel thành các triển khai tương thích với PSR-7
composer require symfony/psr-http-message-bridge
composer require zendframework/zend-diactoros
Khi bạn đã cài đặt các thư viện này, bạn có thể nhận được yêu cầu PSR-7 bằng cách chỉ cần nhập gợi ý loại yêu cầu trên tuyến đường hoặc bộ điều khiển của bạn
use Psr\Http\Message\ServerRequestInterface;
Route::get['/', function [ServerRequestInterface $request] {
Nếu bạn trả về một phiên bản phản hồi PSR-7 từ một tuyến đường hoặc bộ điều khiển, nó sẽ tự động được chuyển đổi trở lại một phiên bản phản hồi của Laravel và được hiển thị bởi khung
Truy xuất đầu vào
Lấy một giá trị đầu vào
Sử dụng một vài phương pháp đơn giản, bạn có thể truy cập tất cả thông tin đầu vào của người dùng từ phiên bản
if [$request->is['admin/*']] {
1 của mình. Bạn không cần phải lo lắng về động từ HTTP được sử dụng cho yêu cầu, vì đầu vào được truy cập theo cùng một cách cho tất cả các động từ$name = $request->input['name'];
Ngoài ra, bạn có thể truy cập đầu vào của người dùng bằng cách sử dụng các thuộc tính của phiên bản
if [$request->is['admin/*']] {
1. Ví dụ: nếu một trong các biểu mẫu của ứng dụng của bạn chứa trường $method = $request->method[];
if [$request->isMethod['post']] {
8, bạn có thể truy cập giá trị của trường đã đăng như sauBạn có thể chuyển một giá trị mặc định làm đối số thứ hai cho phương thức
$method = $request->method[];
if [$request->isMethod['post']] {
9. Giá trị này sẽ được trả về nếu giá trị đầu vào được yêu cầu không có trong yêu cầu$name = $request->input['name', 'Sally'];
Khi làm việc trên các biểu mẫu có đầu vào mảng, bạn có thể sử dụng ký hiệu "dấu chấm" để truy cập các mảng
$input = $request->input['products.0.name'];
Xác định xem có giá trị đầu vào không
Để xác định xem một giá trị có trong yêu cầu hay không, bạn có thể sử dụng phương thức
composer require symfony/psr-http-message-bridge
composer require zendframework/zend-diactoros
0. Phương thức composer require symfony/psr-http-message-bridge
composer require zendframework/zend-diactoros
0 trả về composer require symfony/psr-http-message-bridge
composer require zendframework/zend-diactoros
2 nếu giá trị tồn tại và không phải là một chuỗi rỗngif [$request->has['name']] {
Truy xuất tất cả dữ liệu đầu vào
Bạn cũng có thể truy xuất tất cả dữ liệu đầu vào dưới dạng
composer require symfony/psr-http-message-bridge
composer require zendframework/zend-diactoros
3 bằng phương pháp composer require symfony/psr-http-message-bridge
composer require zendframework/zend-diactoros
4Truy xuất một phần dữ liệu đầu vào
Nếu bạn cần truy xuất một tập hợp con của dữ liệu đầu vào, bạn có thể sử dụng các phương pháp
composer require symfony/psr-http-message-bridge
composer require zendframework/zend-diactoros
5 và composer require symfony/psr-http-message-bridge
composer require zendframework/zend-diactoros
6. Cả hai phương thức này sẽ chấp nhận một composer require symfony/psr-http-message-bridge
composer require zendframework/zend-diactoros
3 hoặc một danh sách đối số độngnamespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
class UserController extends Controller
* Update the specified user.
public function update[Request $request, $id]
0Đầu vào cũ
Laravel cho phép bạn giữ đầu vào từ một yêu cầu trong yêu cầu tiếp theo. Tính năng này đặc biệt hữu ích cho việc điền lại biểu mẫu sau khi phát hiện lỗi xác thực. Tuy nhiên, nếu bạn đang sử dụng các dịch vụ xác thực đi kèm của Laravel, có thể bạn sẽ không cần phải sử dụng các phương thức này theo cách thủ công, vì một số phương tiện xác thực tích hợp sẵn của Laravel sẽ tự động gọi chúng.
Đầu vào nhấp nháy cho phiên
Phương thức
composer require symfony/psr-http-message-bridge
composer require zendframework/zend-diactoros
8 trên phiên bản if [$request->is['admin/*']] {
1 sẽ flash đầu vào hiện tại vào phiên để nó có sẵn trong yêu cầu tiếp theo của người dùng đối với ứng dụngBạn cũng có thể sử dụng các phương pháp
use Psr\Http\Message\ServerRequestInterface;
Route::get['/', function [ServerRequestInterface $request] {
0 và use Psr\Http\Message\ServerRequestInterface;
Route::get['/', function [ServerRequestInterface $request] {
1 để flash một tập hợp con dữ liệu yêu cầu vào phiênnamespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
class UserController extends Controller
* Update the specified user.
public function update[Request $request, $id]
1Nhập Flash vào phiên rồi chuyển hướng
Vì bạn thường muốn nhấp nháy đầu vào cùng với chuyển hướng đến trang trước, nên bạn có thể dễ dàng xâu chuỗi đầu vào nhấp nháy vào một chuyển hướng bằng cách sử dụng phương pháp
use Psr\Http\Message\ServerRequestInterface;
Route::get['/', function [ServerRequestInterface $request] {
2namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
class UserController extends Controller
* Update the specified user.
public function update[Request $request, $id]
2Truy xuất dữ liệu cũ
Để truy xuất đầu vào flash từ yêu cầu trước đó, hãy sử dụng phương pháp
use Psr\Http\Message\ServerRequestInterface;
Route::get['/', function [ServerRequestInterface $request] {
3 trên phiên bản use Psr\Http\Message\ServerRequestInterface;
Route::get['/', function [ServerRequestInterface $request] {
4. Phương thức use Psr\Http\Message\ServerRequestInterface;
Route::get['/', function [ServerRequestInterface $request] {
3 cung cấp một trình trợ giúp thuận tiện để lấy dữ liệu đầu vào được flash ra khỏi phiênnamespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
class UserController extends Controller
* Update the specified user.
public function update[Request $request, $id]
3Laravel cũng cung cấp một hàm trợ giúp
use Psr\Http\Message\ServerRequestInterface;
Route::get['/', function [ServerRequestInterface $request] {
3 toàn cầu. Nếu bạn đang hiển thị đầu vào cũ trong mẫu Blade, sẽ thuận tiện hơn khi sử dụng trình trợ giúp use Psr\Http\Message\ServerRequestInterface;
Route::get['/', function [ServerRequestInterface $request] {
3Bánh quy
Truy xuất cookie từ yêu cầu
Tất cả các cookie được tạo bởi khung Laravel đều được mã hóa và ký bằng mã xác thực, nghĩa là chúng sẽ bị coi là không hợp lệ nếu chúng đã bị khách hàng thay đổi. Để truy xuất giá trị cookie từ yêu cầu, bạn có thể sử dụng phương thức
use Psr\Http\Message\ServerRequestInterface;
Route::get['/', function [ServerRequestInterface $request] {
8 trên phiên bản if [$request->is['admin/*']] {
1namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
class UserController extends Controller
* Update the specified user.
public function update[Request $request, $id]
4Đính kèm Cookie mới vào phản hồi
Laravel cung cấp một hàm trợ giúp
use Psr\Http\Message\ServerRequestInterface;
Route::get['/', function [ServerRequestInterface $request] {
8 toàn cầu, đóng vai trò như một nhà máy đơn giản để tạo các phiên bản $name = $request->input['name'];
1 mới. Các cookie có thể được đính kèm với phiên bản $name = $request->input['name'];
2 bằng phương pháp $name = $request->input['name'];
3namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
class UserController extends Controller
* Update the specified user.
public function update[Request $request, $id]
5Để tạo một cookie tồn tại lâu dài, tồn tại trong năm năm, bạn có thể sử dụng phương pháp
$name = $request->input['name'];
4 trên nhà máy sản xuất cookie bằng cách gọi người trợ giúp use Psr\Http\Message\ServerRequestInterface;
Route::get['/', function [ServerRequestInterface $request] {
8 mà không có đối số, sau đó xâu chuỗi phương thức $name = $request->input['name'];
4 vào nhà máy sản xuất cookie đã trả vềnamespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
class UserController extends Controller
* Update the specified user.
public function update[Request $request, $id]
6Các tập tin
Truy xuất tệp đã tải lên
Bạn có thể truy cập các tệp đã tải lên đi kèm với phiên bản
if [$request->is['admin/*']] {
1 bằng phương thức $name = $request->input['name'];
8. Đối tượng được phương thức $name = $request->input['name'];
8 trả về là một thể hiện của lớp $name = $request->input['name', 'Sally'];
0, lớp này mở rộng lớp $name = $request->input['name', 'Sally'];
1 của PHP và cung cấp nhiều phương thức khác nhau để tương tác với tệpnamespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
class UserController extends Controller
* Update the specified user.
public function update[Request $request, $id]
7Xác minh sự hiện diện của tệp
Bạn cũng có thể xác định xem có tệp nào trong yêu cầu hay không bằng cách sử dụng phương pháp
$name = $request->input['name', 'Sally'];
2namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
class UserController extends Controller
* Update the specified user.
public function update[Request $request, $id]
8Xác thực tải lên thành công
Ngoài việc kiểm tra xem tệp có tồn tại hay không, bạn có thể xác minh rằng không có vấn đề gì khi tải tệp lên thông qua phương pháp
$name = $request->input['name', 'Sally'];
3namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
class UserController extends Controller
* Update the specified user.
public function update[Request $request, $id]
9Di chuyển tệp đã tải lên
Để di chuyển tệp đã tải lên đến một vị trí mới, bạn nên sử dụng phương pháp
$name = $request->input['name', 'Sally'];
4. Phương pháp này sẽ di chuyển tệp từ vị trí tải lên tạm thời của nó [như được xác định bởi cấu hình PHP của bạn] đến một đích lâu dài hơn do bạn chọnif [$request->is['admin/*']] {
0Phương thức tệp khác
Có nhiều phương pháp khác có sẵn trên các phiên bản
$name = $request->input['name', 'Sally'];
5. Kiểm tra tài liệu API cho lớp để biết thêm thông tin về các phương pháp này