52 lines
1.1 KiB
PHP
Executable File
52 lines
1.1 KiB
PHP
Executable File
<?php
|
|
|
|
namespace Rakit\Validation\Rules;
|
|
|
|
use Rakit\Validation\Rule;
|
|
|
|
class Required extends Rule
|
|
{
|
|
use Traits\FileTrait;
|
|
|
|
/** @var bool */
|
|
protected $implicit = true;
|
|
|
|
/** @var string */
|
|
protected $message = "The :attribute is required";
|
|
|
|
/**
|
|
* Check the $value is valid
|
|
*
|
|
* @param mixed $value
|
|
* @return bool
|
|
*/
|
|
public function check($value): bool
|
|
{
|
|
$this->setAttributeAsRequired();
|
|
|
|
if ($this->attribute and $this->attribute->hasRule('uploaded_file')) {
|
|
return $this->isValueFromUploadedFiles($value) and $value['error'] != UPLOAD_ERR_NO_FILE;
|
|
}
|
|
|
|
if (is_string($value)) {
|
|
return mb_strlen(trim($value), 'UTF-8') > 0;
|
|
}
|
|
if (is_array($value)) {
|
|
return count($value) > 0;
|
|
}
|
|
return !is_null($value);
|
|
}
|
|
|
|
/**
|
|
* Set attribute is required if $this->attribute is set
|
|
*
|
|
* @return void
|
|
*/
|
|
protected function setAttributeAsRequired()
|
|
{
|
|
if ($this->attribute) {
|
|
$this->attribute->setRequired(true);
|
|
}
|
|
}
|
|
}
|