Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

ocStore 3 рефакторинг


Recommended Posts

Здравствуйте,

 

На базе ocStore 3 делаю интернет-магазин по продаже автозапчастей.

Части над которими работаю копирую в свое пространство.

Благо, система позволяет делать так: `/index.php?route=namespace/account/register`.

Раз уж я скопировал с свое пространство, то заодно рефакторю код.

...это что бы не было вопросов, а нафига ты это делаешь...опущу остальной ликбез и сразу к делу.

 

К примеру, public/catalog/controller/account/register.php 80-84:

if (isset($this->error['telephone'])) {
   $data['error_telephone'] = $this->error['telephone'];
} else {
   $data['error_telephone'] = '';
}

 

Почему когда я заменяю на:

$data['error_telephone'] = @$this->error['telephone'];

 

У меня уже на страницы идет ошибка по этому полю!

image.png.bb6308ed9102b02d678433f5bec0759e.png

 

Пока писал, еще проверил, проблема в 83 строчке:

$data['error_telephone'] = '';

 

Вот так работает:

$data['error_telephone'] = FALSE;

А вот так, как и мой вариант отрабатывал, уже нет:

$data['error_telephone'] = NULL;

 

Подскажите, почему так происходит?

 

Змінено користувачем borodatych
Надіслати
Поділитися на інших сайтах


Выводом ошибки занимается - шаблон

Я не могу понять зачем вам такие извращения

 

$data['error_telephone'] = @$this->error['telephone'];

 

Если п какой либо причине ві получаете вывод ошибки, то, скорей всего, вы каким-то образом  вы переменную превращайте в true

Надіслати
Поділитися на інших сайтах

Там же дальше еще есть, можно просто заменить пустые кавычки '' на NULL и будет ошибка, проверьте, если есть возможность
А если сделать FALSE, то не будет ошибки
Хоть это и глупо, я делал vardump в контроллере, переменная $data['error_telephone'] была ровно такая, как я ее определил если !isset по ней: '',NULL,FALSE

 


Если:

$data['error_telephone'] = NULL;

То как тут:

{% if error_telephone %}
<div class="text-danger">{{ error_telephone }}</div>
{% endif %} </div>

Оказалось, что error_telephone равно тексту из language файла?

 

 

Надіслати
Поділитися на інших сайтах


Не поверите...

Прежде чем вам ответить

Я взяо ваш код повторил (мало ли, может я что-то упустил)

У меня не получилось

Потому были наводящие вопросы



 

Надіслати
Поділитися на інших сайтах

Только что выкачал и развернул ocStore 3.0.2.0 локально
Пробовал на php 5.6 и 7.1 ошибка повторилась

 

В данном файле:

public\catalog\controller\account\register.php

 

В 83 строке заменил: $data['error_telephone'] = '';

На: $data['error_telephone'] = NULL;

 

Итог тот же:
image.thumb.png.cd077f72bce776e5f154510d9dffe5ec.png

 

...сейчас с OpenCart попробую

Змінено користувачем borodatych
Надіслати
Поділитися на інших сайтах


        if (isset($this->error['telephone'])) {
            $data['error_telephone'] = $this->error['telephone'];
        } else {
            $data['error_telephone'] = '';
        }

А теперь скажите, откуда берется  $this->error['telephone'];

И.. почему не отрабатывет
 

        if (isset($this->error['email'])) {
            $data['error_email'] = $this->error['email'];
        } else {
            $data['error_email'] = '';
        }



 

Надіслати
Поділитися на інших сайтах

17 минут назад, chukcha сказал:

А теперь скажите, откуда берется  $this->error['telephone'];

 

1 час назад, borodatych сказал:

Оказалось, что error_telephone равно тексту из language файла?

Тут должно быть так:
Оказалось, что error_telephone равно тексту из language файла!

 

Вы из-за знака препинания не правильно интерпретировали что я написал?

 

Дико извиняюсь, вы мои знания проверяете или реально не знаете?


Если я в validate методе верну сразу TRUE (между 224 и 225 прописать return TRUE), будет ровно так же!
Тогда вопрос, откуда она `нахрен` тогда берется??

 

Если вы не знаете ocStore 3, то давайте не будет тратить ни мое ни ваше время

Я вот точно ее не знаю, поэтому и обратился за помощью

 

17 минут назад, chukcha сказал:

И.. почему не отрабатывет

Если я 

$data['error_email'] = '';

Заменю на 

 

$data['error_email'] = NULL;

То тоже на голой форме увижу ошибку валидации

Акцентирую, я просто перешел на страницу, данные не отправлял

Змінено користувачем borodatych
Надіслати
Поділитися на інших сайтах


11 минут назад, borodatych сказал:

Если вы не знаете ocStore 3, то давайте не будет тратить ни мое ни ваше время

https://opencartforum.com/profile/675243-chukcha/content/?type=downloads_file

 

 

Надіслати
Поділитися на інших сайтах

Внушительно
Это вы меня значит решили погонять...
Повторюсь, я недавно с этой коробочкой, гонять меня бесполезно, все очевидное я вроде попробовал
Говорю же в валидации тупо ретурн тру и ито он от куда то берет этот текст и лэнгвич файла

Сейчас установил opencart 3.0.2.3 там в 73 строке все того же регистр контроллера $data['error_email'] сделал NULL и вот так же на пустом поле почты сработала ошибка валидация

Вот как есть он там с рендеренгом что-то кружит и NULL в каком то условие не отрабатывает и он переподтягивает значение
Но это, опять таки тыкая пальцем в небо, либо твиг что-то мутит, либо js-ом бегается
В common.js поискал по id-шкам, не нашел или проглядел...

Вы так же на голой системе проверяли мою писанину?
Что за среда?

Змінено користувачем borodatych
Надіслати
Поділитися на інших сайтах


Вам надо пойти в system/config/catalog.php и изучить вот этот кусочек

 

image.png.3d09204ab704bb049e27671b3beb4196.png

 

перед view грузится language и если переменная не определена 

то

image.png.5c63cdfc64964ccac5755ef8fcd07c47.png

 

грубо говоря если переменная null она запишется данными из языкового файла перед выводом во view

  • +1 1
Надіслати
Поділитися на інших сайтах

34 минуты назад, spectre сказал:

грубо говоря если переменная null она запишется данными из языкового файла перед выводом во view

От души, все по делу! Просветили

 

Подскажите как карму апнуть (если здесь такое есть)

Надіслати
Поділитися на інших сайтах


хм, ждя того чтобы оно заменилась у вас должна была быть языковая переменная $_['error_telephone']
Которая по приведенным вами фрагментами нигде не отображалась

 

Надіслати
Поділитися на інших сайтах

В 16.09.2019 в 17:51, chukcha сказал:

хм, ждя того чтобы оно заменилась у вас должна была быть языковая переменная $_['error_telephone']
Которая по приведенным вами фрагментами нигде не отображалась

Ну что да потому...
Почему вы не хотите по серьезнее отнестись?!
В текущем обсуждение все есть!!
 

 

В 16.09.2019 в 15:11, borodatych сказал:
В 16.09.2019 в 14:55, chukcha сказал:

А теперь скажите, откуда берется  $this->error['telephone'];

 

В 16.09.2019 в 13:56, borodatych сказал:

Оказалось, что error_telephone равно тексту из language файла?

Тут должно быть так:
Оказалось, что error_telephone равно тексту из language файла!

 

Второй раз вам цитирую!


Ладно, проблема решена, знания пополнены.
Всех благодарю за потраченное время!
 

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.