"PHP" / Говнокод #17733 Ссылка на оригинал

0

  1. 1
<button type="button" class="btn blue" style="float: left; margin-bottom: 20px; margin-left: 15px;" onclick="window.location = '/cars/car/update/id/<?php echo $model->id; ?>'"></button>

Проект работает на основе Yii framework. Тут явное пренебрежение всеми концепциями и стандартами: от размещения css в html элементе, до не понимания, как устроен веб в целом -- почему window.location, а не обычный линк, для меня остается тайной. Искренне желаю взглянуть в лицо автору кода.

Запостил: creepy-code creepy-code, (Updated )

Комментарии (26) RSS

  • Печальные плоды книг а-ля "HTML и CSS за 1 день".
    Ответить
  • Как будто по стандартам Yii 1 там все было бы значительно красивей
    Ответить
    • по стандартам/ рекомендациям js и HTML было бы уже красивей
      Ответить
  • Здесть скорей категория HTML/CSS/JS

    А по стандартам Yii 1 button вывести нихрена не легче, чем просто вписать в представление html-код
    Ответить
    • В чем сложность?

      <?= CHtml::link('Редактировать', ['/cars/car/update', 'id'=>$model->id], ['class'=>'btn btn-success']) ?>
      Ответить
      • <a class="btn btn-success" href="/cars/car/update<?= $model->id ?>">Редактировать</a>


        покороче вышло
        понятно, что там еще URL надо генерировать на лету, а при локализации там появится еще говна, но все равно делать согласно замыслу Yii 1обычно себе дороже.
        Ответить
        • > покороче вышло
          Ага... На десяток символов покороче... А в итоге поломал ЧПУ, которые могли работать в оригинале и запорол ссылку - вот всяко там было /cars/car/update/10 или /cars/car/update?id=10, а не /cars/car/update10. И ради чего была эта "оптимизация"?

          Ну и <?php ?> посреди атрибутов, имхо, смотрится ужасно.
          Ответить
          • а я и не говорю, что это хорошее решение. мы тут спорим, что уебищнее - говно с yii или говно без yii.
            Ответить
  • Почему висит onclick - потому что это кнопка. А фигачить CSS для того, чтобы линк выглядел, как кнопка (или создавать форму, над которой ты бы также поржал), у автора может не быть ни времени, ни желания. По той же причине css внутри style-атрибута.

    А причиной всему "Надо через 10 минут, у нас презентация, а кнопка не работает! ААААА!" от менеджера.

    Говнокод? Да! Ржать над ним? Плакать скорее, причём понимая вероятные причины.
    Ответить
    • Недостаток времени? - Возможно. Недостаток знаний? - Определенно, да.

      Времени, чтобы сделать ссылку и повесить на нее класс или те же стили, занимает ровно столько же, сколько и эта реализация.
      Ответить
      • Класс не обязательно будет корректно работать на ссылке. А PHP-программисту совсем не обязательно знать CSS настолько, чтобы корректно закодить ссылку в кнопку. Более того, если кнопки используются стандартные для браузера, то это фактически невозможно. Но если вы не согласны - я с удовольствием посмотрю на реализацию.
        Ответить
        • Что значит "корректно закодить ссылку в кнопку"?
          Там нужно было сделать ссылку для перехода на страницу редактирования -- всё. Эта задача реализуется при помощи тега <a href='...'></a>.
          Ответить
          • Есть некоторое отличие от элемента со стилем "кнопка" от элемента со стилем "ссылка".
            Ответить
            • Пришлите ссылку на стандарт, пожалуйста, а то может быть это я говнокодер +)
              Ответить
              • В том и проблема, что стандарта нет. У меня как-то был случай, когда в системе была частично стилизованная кнопка - покрашен фон, изменён бордер-радиус. В остальном она выглядела, как обычная браузерная кнопка. И вот её-то я бы никогда не стал даже пытаться закодить из ссылки CSS-ом.

                Опять же, если в той системе стили от какого-нибудь бутстрапа - да, программер погорячился слегка.
                Ответить
                • > частично стилизованная кнопка
                  Это вообще возможно хоть в каком-нибудь браузере? Емнип, нативное оформление кнопки полностью отваливается после любой попытки что-то перекрасить или скруглить. Поэтому либо вообще не трогаем стиль, либо делаем полностью свой. Третьего не дано.

                  Но я могу ошибаться. Я не профи в вёрстке.
                  Ответить
      • Чем она нестандартная? button и blue? Далеко не факт. Т.к. больше никакой информации не приведено, то это не говнокод, а говнопост.

        Ну и да, использовать вот это - <?= CHtml::link('Редактировать', ['/cars/car/update', 'id'=>$model->id], ['class'=>'btn btn-success']) ?> вместо чистого html - это тот ещё пиздец, конечно (а это автор приводит, как пример правильной кнопки, причём почему-то автоматически подразумевая, что используется бутстраповская кнопка).
        Ответить
        • Согласен, что это хуже чистого html, потому что, как минимум, требует процессорного времени на генерацию html.
          Но, есть важный момент -- сам адрес ссылки. Фреймворк, как вы могли заметить, используется Yii. А Yii в свою очередь поддерживает настройку маршрутов. Т.е. исходный /cars/car/update/id/<id> можно заменить в настройках приложения на что душе угодного, хоть на /cs-c-u-<id>, при условии, что этот адрес обрабатывается urlManager'ом.
          В своем примере, я хотел показать лаконичность кода, который легко читается и его можно легко рефакторить.
          Я ни в коем случае не претендую на правильный вариант кнопки -- исходное решение неплохо справляется со своим замыслом. Тут дело в другом: если я использую фреймворк, я следую его тенденциям.
          А иначе, какой смысл использовать фреймворк, если можно накостылить велосипедов с нуля?!
          Ответить
          • Вот с этой мыслью (что нужно придерживаться стандартов того, на чём пишешь) абсолютно согласен.

            Насчёт ссылок-кнопок - у меня самого было куча случаев, когда приходилось писать такие вот решения по причинам, которые я перечислил. Обычно это бывает в проектах, в которых подобные решения можно считать даже красивыми, потому что остальной код - это полный пиздец. Ну и опять же, как я уже писал - у PHP-программистов с фронтендом в целом жопа. Лучше нанимать отдельного человека на это, если есть возможность.
            Ответить

Добавить комментарий

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8