У меня есть форма:сериализации формы в пользовательские объекты
<form...>
<input type="text" name="Name" />
<input type="text" name="Age" />
</form>
Эти данные размещены на мой контроллер:
...
public function PostCreatePerson()
{
$data = Input::all();
// I end up with an array
}
...
Теперь представьте себе, вместо того, чтобы иметь массив ... или массив просто приведённый к StdClass ... Я хочу, чтобы бросить его в пользовательский объект
...
public function PostCreatePerson()
{
$data = (Person)Input::all();
// I end up with a Person
}
...
Q: есть ли framewor ks, которые имеют этот процесс сериализации как приятная небольшая функция? Или я застрял в том, что мне нужно было сопоставить его? Что еще более конкретно, есть ли встроенный в Laravel?
...
public function PostCreatePerson()
{
$person = new Person();
$person->Name = Input::get("Name");
$person->Age = Input::get("Age");
}
...
Этот вопрос исходит из того, что в C# .NET MVC, форма сообщение его данные в контроллер, а также рамка сериализуют данные в тип объекта, который находится в контроллере ... и я совсем как этот синтаксис.
...
public void PostCreatePerson(Person person)
{
// person is of type Person and pre-mapped from the form data
}
...
Я сделал еще немного поэкспериментировать ...
Если я взгляну на сырье размещены данные:
$data = file_get_contents("php://input");
Это выглядит как это:
Name=James&Age=25
Если посмотреть на упорядоченный объект:
$serialized = serialize(new Person());
это выглядит следующим образом:
O:6:"Person":2:{s:4:"Name";N;s:3:"Age";N;}
Если была структура, которая спрашивает метод контроллера, какой тип вы ищете?
public function PostCreatePerson(Person $person)
{...
А потом говорит, о HangOn ... «Человек» соответствует типу «Человек», так это то, что мне нужно отобразить в.
После того, как сопоставляются:
O:6:"Person":2:{s:4:"Name";s:5:"James";s:3:"Age";i:25;}
Это десериализует его и вводит его в собственность, которая хотела его.
Тогда ваша форма была успешно отображается в пользовательском класс ...
Интересно, есть ли рамка или плагин, который делает это?
Я только поиграл с идеей изменения строки сериализации, чтобы иметь значения, потому что тогда она не будет называть конструкцию Person ... Возможно, иметь выбор вызова или не вызывать конструкцию также является допустимым требованием?
Любые причины, чтобы закрыть это? Возможно, я могу расширить свой вопрос, хотя, думаю, я был основательным? – Jimmyt1988
Что именно вы пытаетесь выполнить после его сериализации? Если ваша цель - просто сохранить его в базе данных, тогда ответ Razors правильный. – Jeff