Laravelda ushbu 2 parametrni olib boradigan yo'lni qanday e'lon qilishim mumkin?

Laravel da juda yangi va menda quyidagi muammolar mavjud.

Bu kabi so'rovlarni boshqaradigan marshrutni e'lon qilishim kerak:

http://laravel.dev/[email protected]&token=eb0d89ba7a277621d7f1adf4c7803ebc

Shuning uchun asosan GET so'rovini qabul qiling /activate manbaiga 2 ta parametr email va belgisi .

Ushbu marshrutni qanday qilib to'g'ri deb e'lon qilishim mumkin? Undan keyin faqat ushbu 2 parametrni olgan tegishli tekshiruv usulini yaratish kerakmi?

Tnx

0
Route :: get ("/ activate/{parameter1}/{parameter2}", "Controller @ getMethod"); umumiy funktsiya getMethod ($ parameter1, $ parameter2) {.. laravel.com/docs/5.4/routing#route-parameters Qo'shimcha ma'lumot uchun. Route parametrlari GET parametrlari bilan bir xil (ya'ni, So'rov Stringidagi) emas
qo'shib qo'ydi muallif Tim Lewis, manba
Route :: get ("/ activate/{parameter1}/{parameter2}", "Controller @ getMethod"); umumiy funktsiya getMethod ($ parameter1, $ parameter2) {.. laravel.com/docs/5.4/routing#route-parameters Qo'shimcha ma'lumot uchun. Route parametrlari GET parametrlari bilan bir xil (ya'ni, So'rov Stringidagi) emas
qo'shib qo'ydi muallif Tim Lewis, manba

8 javoblar

URLni qayta yozishni (Pretty URL) ishlatishni istamasangiz, marshrutni quyidagicha e'lon qiling:

Route::get('/activate','[email protected]');

va tekshirgichda token va elektron pochtani tekshiring:

if(Input::has('email') && Input::has('token))
{
  //YOUR CODE
}
1
qo'shib qo'ydi
URLni qayta yozish bilan nima demoqchisiz? men paramlarni marshrutga belgilab, keyin uni tekshiruvchi usuliga o'tkazamanmi?
qo'shib qo'ydi muallif AndreaNobili, manba
Nima Masalan? Sizning xabaringiz tugallanmagan ko'rinadi
qo'shib qo'ydi muallif AndreaNobili, manba
URLni qayta yozishni aytganda, sizning urlingiz quyidagi kabi ko'rinadi: laravel.dev/activate/myemail @ gmail.com/& hellip; Ushbu yondashuvni ishlatmoqchi bo'lsangiz: stackoverflow.com/a/42539104/2952213
qo'shib qo'ydi muallif Shakti Phartiyal, manba

URLni qayta yozishni (Pretty URL) ishlatishni istamasangiz, marshrutni quyidagicha e'lon qiling:

Route::get('/activate','[email protected]');

va tekshirgichda token va elektron pochtani tekshiring:

if(Input::has('email') && Input::has('token))
{
  //YOUR CODE
}
1
qo'shib qo'ydi
URLni qayta yozish bilan nima demoqchisiz? men paramlarni marshrutga belgilab, keyin uni tekshiruvchi usuliga o'tkazamanmi?
qo'shib qo'ydi muallif AndreaNobili, manba
Nima Masalan? Sizning xabaringiz tugallanmagan ko'rinadi
qo'shib qo'ydi muallif AndreaNobili, manba
URLni qayta yozishni aytganda, sizning urlingiz quyidagi kabi ko'rinadi: laravel.dev/activate/myemail @ gmail.com/& hellip; Ushbu yondashuvni ishlatmoqchi bo'lsangiz: stackoverflow.com/a/42539104/2952213
qo'shib qo'ydi muallif Shakti Phartiyal, manba

Parametrlarni so'rov parametrlari sifatida qabul qilish uchun ularni tekshiruvchi usulingizga kirita oladigan so'rov ob'ektida olishingiz mumkin:

Marshrut

Route::get('/activate', '[email protected]');

Tekshirish birligi

public function controllerMethod(Request $request)
{
    $email = $request->input('email');
    $code = $request->input('code');
}

Bunga qo'shimcha ravishda, agar ulardan bittasi bo'lmasa, standart qiymat sifatida foydalanish uchun kiritish parametrini 2 parametr bilan almashtirishi mumkin.

1
qo'shib qo'ydi
Yo'nalishdagi parametrlarni belgilashingiz mumkin, buning o'rniga bu parametrni Request object = ob'ektidan olish mumkin
qo'shib qo'ydi muallif AndreaNobili, manba
Siz ularni tekshiruvchiga in'ektsiz marshrut belgilashda ko'rsatib bera olmaysiz. ['email', 'code']; sizga ['email' => 'youremail @ email yoki code bo'lsa, u holda uni faqatgina array yoki bo'lmasa bo'sh qatorni olasiz.
qo'shib qo'ydi muallif Eric Tucker, manba

Yo'nalish:

Yo'nalish::get('/activate/{email}/{token}', [ 'uses' => '[email protected]', 'as' => 'activate' ]);

Nazorat qiluvchi:

ActivationController.php

public function activate($email, $token)
{
   //$email would be '[email protected]'
   //$token would be 'eb0d89ba7a277621d7f1adf4c7803ebc'
   //do stuff...
}

Yoki so'rovlar parametrlaridan foydalansangiz:

Yo'nalish:

Yo'nalish::get('/activate', [ 'uses' => '[email protected]', 'as' => 'activate' ]);

Nazorat qiluvchi:

public function activate(Request $request)
{
    if ( $request->has('email') && $request->has('token') )
    {
        $email = $request->email;
        $token = $request->token;
    }
}
1
qo'shib qo'ydi
Yo'q, men URI'ni "/ activate/{email}/{token}" kabi ishlata olmayman. Get my parametresim bilan URLni param = qiymatdan foydalangan holda ishlatishim kerak
qo'shib qo'ydi muallif AndreaNobili, manba
Yuqoridagi javobni tahrirladim ...
qo'shib qo'ydi muallif Mark, manba

Yo'nalish:

Yo'nalish::get('/activate/{email}/{token}', [ 'uses' => '[email protected]', 'as' => 'activate' ]);

Nazorat qiluvchi:

ActivationController.php

public function activate($email, $token)
{
   //$email would be '[email protected]'
   //$token would be 'eb0d89ba7a277621d7f1adf4c7803ebc'
   //do stuff...
}

Yoki so'rovlar parametrlaridan foydalansangiz:

Yo'nalish:

Yo'nalish::get('/activate', [ 'uses' => '[email protected]', 'as' => 'activate' ]);

Nazorat qiluvchi:

public function activate(Request $request)
{
    if ( $request->has('email') && $request->has('token') )
    {
        $email = $request->email;
        $token = $request->token;
    }
}
1
qo'shib qo'ydi
Yo'q, men URI'ni "/ activate/{email}/{token}" kabi ishlata olmayman. Get my parametresim bilan URLni param = qiymatdan foydalangan holda ishlatishim kerak
qo'shib qo'ydi muallif AndreaNobili, manba
Yuqoridagi javobni tahrirladim ...
qo'shib qo'ydi muallif Mark, manba

In routes.php (Laravel < 5.3) or web.php (Laravel 5.4+):

Route::get('/activate', [ 'as' => 'activate', function()
{
    return app()->make(App\Http\Controllers\ActivateController::class)->callAction('activate', $parameters = [ 'email' => request()->email, 'token' => request()->token ]);
}]);

Shuning uchun biz ActivateController sinfini sinab ko'rmoqdamiz va birinchi argument bo'lgan "faollashtirish" usulini chaqiramiz, keyin parametrlarni ro'yxatni bir qator shaklida oladi.

public function activate($email, $token)
{
    echo "Email: $email";//[email protected]
    echo "Token: $token";//eb0d89ba7a277621d7f1adf4c7803ebc
   //do stuff
}
1
qo'shib qo'ydi

Siz aslida ikkita xususiyatlardan birini ishlatasiz. Har ikkala xususiyatni bir vaqtning o'zida ishlatishingiz shart emas. Mening takliflarim faqat marshrutlardan foydalanish. Misol:

<?php Router::connect(
'/activate/:email/:token',
['controller' => 'Accounts', 'action' => 'activate'],
['email' => '.*', 'token' => '.*']); ?>

Keyin quyidagi urlni ishlatasiz: your-site.com/accounts/activate/[email protected]/your-token

Marshrut kodlari /config/routes.php sahifasiga joylashtirilishi kerak

More details in: https://book.cakephp.org/3.0/en/development/routing.html

1
qo'shib qo'ydi
ParamName = value bilan e'lon qilingan Get parametrini ishlatish kerak
qo'shib qo'ydi muallif AndreaNobili, manba
Bu xuddi shunday. Ham do'stona urlni ishlatish afzalligi hali ham ...
qo'shib qo'ydi muallif Marcus Monteiro, manba
Ushbu g'oyani quyidagicha kengaytira olasiz:/controler/whatever/you/want Bu tizim tizim sizga allaqachon ishlatishga tayyor bo'lgan kontrolördeki ma'lumotlarni beradi. Misol: Router :: connect ('/ activate /: p1 /: p2 /: p3 /: p4' ...) Limit sizning tasavvurlaringiz va kodni optimallashtirish mos emas.
qo'shib qo'ydi muallif Marcus Monteiro, manba

Marshrut shunday bo'ladi:

Route::get('account/email/validate', '[email protected]')->name('account.validate.email');

Nazorat uslubi quyidagicha bo'ladi:

public function validateEmail()
{
   //request()->email
   //request()->token
}

So'rovlar dizayni bilan URLni yaratish uchun siz quyidagilarni bajarishingiz kerak:


Yoki siz ham uni qattiq kodlashingiz mumkin.

0
qo'shib qo'ydi
Yo'q, men URI'ni "/ activate/{email}/{token}" kabi ishlata olmayman. Get my parametresim bilan URLni param = qiymatdan foydalangan holda ishlatishim kerak
qo'shib qo'ydi muallif AndreaNobili, manba
OK, kod yangilandi.
qo'shib qo'ydi muallif user2094178, manba
Laravel Uzbek Community
Laravel Uzbek Community
413 ishtirokchilar

PhP |BotsUz
PhP |BotsUz
93 ishtirokchilar

Phpni o'rganishni Hohlasangiz https://t.me/joinchat/AAAAAE-KRc5dd5tPMmGmWA A'zo bo'lin