Проблема в ваших условиях "если".
Решение
if ($request->input('port')) // <----
{
$host->port = $request->port;
}
Попробуйте вместо этого:
if ($request->has('port')) // <----
{
$host->port = $request->port;
}
Обновление
Вы должны сначала проверить, существует ли желаемый ввод в запросе Из документов:
Определение наличия входного значения
Вы должны использовать метод has, чтобы определить, присутствует ли значение в
запрос. Метод has возвращает true, если значение присутствует в
запрос:
if ($request->has('name')) {
//
}
Тогда вы должны получить ввод.
Теперь относимся к методам:
При выполнении $request->has(...)
вы проверяете, содержит ли запрос заданный ключ элемента ввода (или клавиши). Вот что делает метод:
# trait InteractsWithInput.php
/**
* Determine if the request contains a given input item key.
*
* @param string|array $key
* @return bool
*/
public function has($key)
{
$keys = is_array($key) ? $key : func_get_args();
$input = $this->all();
foreach ($keys as $value) {
if (! Arr::has($input, $value)) {
return false;
}
}
return true;
}
Как видите, он просто возвращает логическое значение.
При выполнении $request->input(...)
вы пытаетесь получить входные данные из запроса:
# trait InteractsWithInput.php
/**
* Retrieve an input item from the request.
*
* @param string|null $key
* @param string|array|null $default
* @return string|array|null
*/
public function input($key = null, $default = null)
{
return data_get(
$this->getInputSource()->all() + $this->query->all(), $key, $default
);
}
С этим методом связано то, что он немного более мощный, потому что он может принимать вложенные данные, используя точечную запись (в отличие от $request->get()
). Проверьте эту статью для более подробной информации.
Это вернет string
, array
или null
.
Теперь именно здесь находится ошибка (как вы можете проверить, присутствует ли ваша ошибка в трассировке). Похоже, что этот метод пытается обработать данный объект как строку, чтобы разрешить оператор if (я действительно не знаю, потому что у меня нет доступа к подробным сведениям об ошибках).
Итак, сначала проверьте, имеет ли запрос определенный атрибут, а затем извлекает ввод , чтобы сделать то, что вам нужно.