Jump to content
Sign in to follow this  
borodatych

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;

 

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

 

Edited by borodatych

Share this post


Link to post
Share on other sites

потому что вы показали код контроллера, а не код шаблона

Share this post


Link to post
Share on other sites

Не могу понять на какую часть мое текста вы ответили?!

Шаблон родной\дефолтный от ocStore, вот конкретная секция:
image.thumb.png.660582e0e9c83f675b586cd937edf808.png

 

Share this post


Link to post
Share on other sites

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

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

 

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

 

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

Share this post


Link to post
Share on other sites

Там же дальше еще есть, можно просто заменить пустые кавычки '' на 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 файла?

 

 

Share this post


Link to post
Share on other sites

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

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

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

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

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



 

Share this post


Link to post
Share on other sites

Только что выкачал и развернул 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 попробую

Edited by borodatych

Share this post


Link to post
Share on other sites
        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'] = '';
        }



 

Share this post


Link to post
Share on other sites
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;

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

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

Edited by borodatych

Share this post


Link to post
Share on other sites
11 минут назад, borodatych сказал:

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

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

 

 

Share this post


Link to post
Share on other sites

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

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

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

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

Edited by borodatych

Share this post


Link to post
Share on other sites

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

 

image.png.3d09204ab704bb049e27671b3beb4196.png

 

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

то

image.png.5c63cdfc64964ccac5755ef8fcd07c47.png

 

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

  • +1 1

Share this post


Link to post
Share on other sites
34 минуты назад, spectre сказал:

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

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

 

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

Share this post


Link to post
Share on other sites

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

 

Share this post


Link to post
Share on other sites
В 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 файла!

 

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


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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.