Я использую библиотеку проверки CI4 для проверки моей формы на стороне сервера. Тег формы создается с помощью вспомогательной функции form_open_multipart
. Вот пример кода для HTML и контроллера
ProductController. php (Контроллер)
class ProductController extends BaseController
{
...
public function create()
{
if (!$this->validateFrom()) {
echo '<pre>'.print_r($this->validator->getErrors());die();
$this->session->setFlashdata('validator', $this->validator);
$this->session->setFlashdata('product_form', $this->request->getPost());
return redirect('admin.product.new');
}
...
}
private function validateFrom()
{
return $this->validate([
'product_name' => [
'label' => 'Product name',
'rules' => 'required',
'errors' => [
'required' => '{field} is required.'
]
]
]);
}
...
}
ProductForm. php (Просмотр файла)
<?= form_open_multipart(route_to('prodyct.create'), ['id' => 'prodForm', 'class' => 'form-horizontal']); ?>
<div class="form-group row">
<label for="product_name" class="col-4 col-form-label text-right">Product Name</label>
<div class="col-8 p-0">
<input type="text"
class="form-control <?= $validator->hasError('product_name') ? 'is-invalid' : '' ?>"
id="product_name"
name="product_name"
value="<?= $productForm->product_name ?? null ?>"
placeholder=""/>
<?php if ($validator->hasError('product_name')): ?>
<div class="invalid-feedback">
<?= $validator->getError('product_name'); ?>
</div>
<?php endif; ?>
</div>
</div>
<div class="form-group row">
<label for="product_image" class="col-4 col-form-label text-right">Product Image</label>
<div class="col-8 p-0">
<input type="text"
class="form-control <?= $validator->hasError('product_image') ? 'is-invalid' : '' ?>"
id="product_image"
name="product_image"
value="<?= $productForm->product_image ?? null ?>"
placeholder=""/>
<?php if ($validator->hasError('product_image')): ?>
<div class="invalid-feedback">
<?= $validator->getError('product_image'); ?>
</div>
<?php endif; ?>
</div>
</div>
<?= form_close(); ?>
При отправке формы всегда происходит сбой при проверке, даже если указано значение.
Array
(
[product_name] => Product Name is required.
)
Когда я проверяю с помощью метода withRequest
of CodeIgniter\Validation\Validation
Кажется, что когда он пытается получить данные с помощью $this->data = $request->getRawInput();
, getRawInput
возвращает значение null.
Может ли кто-нибудь помочь мне с этим?
Спасибо!