@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()
медленнее, чем использование отражения, как я. Проверьте .
Когда вы отправляете форму, она должна перехватывать данные поста в действии контроллера, как это-
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
}
Вы должны реструктурировать свои маршруты, чтобы зона и деревня стали параметрами маршрута.
Так, например, маршрут для 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.