PHP с фреймворком Symfony:
Прежде всего перед контекстом:
Моя форма ввода создается конструктором форм.Там нет ничего плохого.Так что это не проблема
Я делаю систему проверки смс.У меня есть контроллер и 2 службы (validatorservice, smsapi (для вызова API)). Теперь моя validatorservice выглядит следующим образом:
class ValidatorService
{
public function validate($telefoonnummer)
{
$pregpatternNL = '(^\+[0-9]{2}|^\+[0-9]{2}\(0\)|^\(\+[0-9]{2}\)\(0\)|^00[0-9]{2}|^0)([0-9]{9}$|[0-9\-\s]{10}$)';
if (!preg_match($pregpatternNL, $telefoonnummer)) {
return false;
} else {
return true;
}
}
}
Тогда мой homecontroller:
use App\Service\ValidatorService;
class HomeController extends AbstractController
{
/** @var SmsApi */
private $smsApi;
/** @var validatorService */
private $validatorService;
public function __construct1(SmsApi $smsApi, Validatorservice
$validatorService)
{
$this->smsApi = $smsApi;
$this->validatorService = $validatorService;
}
/**
* @Route("/")
* @Template()
*
* @param Request $request
*
* @return array
*/
public function indexAction(Request $request)
{
$form = $this->createForm(
SmsLogFormType::class,
new SmsLog(),
[
'method' => 'post',
]
);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
/** @var SmsLog $smslog */
$formData = $form->getData();
try {
$telefoonnummer = $formData->getTel();
$telefoonnummer = preg_replace('/[^0-9]/', '', $telefoonnummer);
$validatorservices = $this->validatorService-
>validate($telefoonnummer);
if ($validatorserviceres === false) {
$this->addFlash(
'notice',
'telefoonnummer onjuist formaat'
);
exit;
} else {
blablabla
}
Теперь, что бы я нипопробуй я получу ошибку:
вызов функции-члена validate () для null
Сначала я подумал, что это может быть что-то с именами constructor
, но нашелонлайн, что это не имеет значения вообще (также я не получил никаких ошибок кода там)
Затем я попытался добавить эхо в оператор if в моем сервисе.Может возвращать true или false рассматривается как null
, но это тоже не работает.