Laravel: Изменить результат входного запроса на дружественный URL

@EboMike: Я не знал, что существует Resources.getIdentifier().

В моих проектах я использовал следующий код для этого:

public static int getResId(String resName, Class c) {

    try {
        Field idField = c.getDeclaredField(resName);
        return idField.getInt(idField);
    } catch (Exception e) {
        e.printStackTrace();
        return -1;
    } 
}

Он будет использоваться например:

getResId("icon", Drawable.class);

Я только что нашел сообщение в блоге, в котором говорилось, что Resources.getIdentifier() медленнее, чем использование отражения, как я. Проверьте .

2
задан Pankaj Sanam 1 March 2019 в 01:50
поделиться

2 ответа

Когда вы отправляете форму, она должна перехватывать данные поста в действии контроллера, как это-

class MyController
{
    public function create()
    {
        // Your form
    }

    public function store()
    {
        // This is where you receive the zone and villa in the request
    }
}

. Как вы можете видеть, вы получили поле ввода в запросе в вашем методе магазина, теперь вы можете сделайте что-то вроде этого -

public function store(Request $request)
{
    // Your code here
    redirect()->to($request->zone.'/'.$request->villa);
}

Пожалуйста, убедитесь, что у вас есть маршруты , созданные для зоны и виллы, в противном случае перенаправление на несуществующий маршрут / URL не будет работа.

Создайте такой маршрут для вашего запроса:

Route::get('estates/{zone}/{villa}', 'MyController@anotherMethod');

У вас будет другой метод действия в вашем контроллере, чтобы получать входные данные зоны и виллы , например это-

public function anotherMethod($zone, $villa)
{
    // Access your $zone and $villa here
}
0
ответ дан Pankaj Sanam 1 March 2019 в 01:50
поделиться

Вы должны реструктурировать свои маршруты, чтобы зона и деревня стали параметрами маршрута.

Так, например, маршрут для http: // localhost: 8000 / estates / London / villa будет Route::post('/estates/{zone}/{villa}', 'SomeController@action'), и в контроллере вы можете ввести зону и село в качестве параметров. Таким образом, вы можете использовать что-то вроде этого:

class SomeController {
         public function action(Request $request, string $zone, string $villa){

         }
}

Это описано далее в разделе Параметры маршрута в Routing in Laravel docs.

0
ответ дан Abhiyan Paudyal 1 March 2019 в 01:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: