こんにちはRESTとLaravelの後に this の記事を使用してAPIを作成しています。
すべてが期待どおりに機能します。
ここで、GET要求をマップして、「?」を使用して変数を認識します。
例えば: domain/api/v1/todos?start=1&limit=2
以下は、routes.phpのコンテンツです。
Route::any('api/v1/todos/(:num?)', array(
'as' => 'api.todos',
'uses' => 'api.todos@index'
));
controllers/api/todos.php:
class Api_Todos_Controller extends Base_Controller {
public $restful = true;
public function get_index($id = null) {
if(is_null($id)) {
return Response::eloquent(Todo::all(1));
} else {
$todo = Todo::find($id);
if (is_null($todo)) {
return Response::json('Todo not found', 404);
} else {
return Response::eloquent($todo);
}
}
}
}
「?」を使用してgetパラメータを認識する方法?
$ _ GET および $ _ REQUEST スーパーグローバルを見てください。次のようなものがあなたの例のために働くでしょう:
_$start = $_GET['start'];
$limit = $_GET['limit'];
_
[〜#〜] edit [〜#〜]
laravelフォーラム のこの投稿)によれば、Input::get()
を使用する必要があります。
_$start = Input::get('start');
$limit = Input::get('limit');
_
他のLaravel=バージョンではテストしていませんが、5.3-5.7では、クエリパラメータをRequest
class
のメンバであるかのように参照します。
http://example.com/path?page=2
Route::get('/path', function(Request $request){
dd($request->page);
});
//or in your controller
public function foo(Request $request){
dd($request->page);
}
//NOTE: If you are wondering where the request instance is coming from, Laravel automatically injects the request instance from the IOC container
//output
"2"
パラメータが存在しない場合に返されるデフォルト値を渡すこともできます。リクエストのグローバルで通常使用する三項式よりもずっときれいです
//wrong way to do it in Laravel
$page = isset($_POST['page']) ? $_POST['page'] : 1;
//do this instead
$request->get('page', 1);
//returns page 1 if there is no page
//NOTE: This behaves like $_REQUEST array. It looks in both the
//request body and the query string
$request->input('page', 1);
$page = request('page', 1);
//returns page 1 if there is no page parameter in the query string
//it is the equivalent of
$page = 1;
if(!empty($_GET['page'])
$page = $_GET['page'];
defaultパラメータはオプションであるため、省略できます
入力メソッドはリクエストペイロード全体(クエリ文字列を含む)から値を取得しますが、クエリメソッドはクエリ文字列からのみ値を取得します
//this is the equivalent of retrieving the parameter
//from the $_GET global array
$page = $request->query('page');
//with a default
$page = $request->query('page', 1);
$page = Request::get('page');
//with a default value
$page = Request::get('page', 1);
詳細については、公式ドキュメントをご覧ください https://laravel.com/docs/5.8/requests
現在、同様の状況があり、この回答の時点で、laravel 5.6リリースを使用しています。
それは関連しているので、私は質問ではあなたの例を使用しません。
私はこのようなルートがあります:
Route::name('your.name.here')->get('/your/uri', 'YourController@someMethod');
次に、コントローラーメソッドに、必ず以下を含めます。
use Illuminate\Http\Request;
php artisan
を使用して生成された場合、これはおそらくコントローラーの上部にあるはずです。URLから変数を取得するには、次のようになります。
public function someMethod(Request $request)
{
$foo = $request->input("start");
$bar = $request->input("limit");
// some codes here
}
HTTP動詞に関係なく、input()メソッドを使用してユーザー入力を取得できます。
https://laravel.com/docs/5.6/requests#retrieving-input
この助けを願っています。
クエリパラメータは次のように使用されます。
use Illuminate\Http\Request;
class MyController extends BaseController{
public function index(Request $request){
$param = $request->query('param');
}
これがベストプラクティスです。この方法では、GETメソッドとPOSTメソッドから変数を取得します
public function index(Request $request) {
$data=$request->all();
dd($data);
}
//OR if you want few of them then
public function index(Request $request) {
$data=$request->only('id','name','etc');
dd($data);
}
//OR if you want all except few then
public function index(Request $request) {
$data=$request->except('__token');
dd($data);
}
In laravel 5.$start = Input::get('start');
はNULL
を返します
これを解決するには
use Illuminate\Support\Facades\Input;
//then inside you controller function use
$input = Input::all(); // $input will have all your variables,
$start = $input['start'];
$limit = $input['limit'];
In laravel 5.3
ビューにgetパラメータを表示したい
ステップ1:私のルート
Route::get('my_route/{myvalue}', 'myController@myfunction');
ステップ2:コントローラー内に関数を書く
public function myfunction($myvalue)
{
return view('get')->with('myvalue', $myvalue);
}
これで、ビューに渡したパラメーターを返しています
ステップ3:ビューに表示する
私の意見の中で、私は単に
{{ $myvalue }}
あなたのURLにこれがある場合
http://127.0.0.1/yourproject/refral/[email protected]
次に、ファイルを表示して[email protected]を印刷します
これが誰かを助けることを願っています。