- 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>
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+157
<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, а не обычный линк, для меня остается тайной. Искренне желаю взглянуть в лицо автору кода.
А по стандартам Yii 1 button вывести нихрена не легче, чем просто вписать в представление html-код
покороче вышло
понятно, что там еще URL надо генерировать на лету, а при локализации там появится еще говна, но все равно делать согласно замыслу Yii 1обычно себе дороже.
Ага... На десяток символов покороче... А в итоге поломал ЧПУ, которые могли работать в оригинале и запорол ссылку - вот всяко там было /cars/car/update/10 или /cars/car/update?id=10, а не /cars/car/update10. И ради чего была эта "оптимизация"?
Ну и <?php ?> посреди атрибутов, имхо, смотрится ужасно.
Неужели весь веб в целом?
А причиной всему "Надо через 10 минут, у нас презентация, а кнопка не работает! ААААА!" от менеджера.
Говнокод? Да! Ржать над ним? Плакать скорее, причём понимая вероятные причины.
Времени, чтобы сделать ссылку и повесить на нее класс или те же стили, занимает ровно столько же, сколько и эта реализация.
Там нужно было сделать ссылку для перехода на страницу редактирования -- всё. Эта задача реализуется при помощи тега <a href='...'></a>.
Опять же, если в той системе стили от какого-нибудь бутстрапа - да, программер погорячился слегка.
Это вообще возможно хоть в каком-нибудь браузере? Емнип, нативное оформление кнопки полностью отваливается после любой попытки что-то перекрасить или скруглить. Поэтому либо вообще не трогаем стиль, либо делаем полностью свой. Третьего не дано.
Но я могу ошибаться. Я не профи в вёрстке.
Ну и да, использовать вот это - <?= CHtml::link('Редактировать', ['/cars/car/update', 'id'=>$model->id], ['class'=>'btn btn-success']) ?> вместо чистого html - это тот ещё пиздец, конечно (а это автор приводит, как пример правильной кнопки, причём почему-то автоматически подразумевая, что используется бутстраповская кнопка).
Но, есть важный момент -- сам адрес ссылки. Фреймворк, как вы могли заметить, используется Yii. А Yii в свою очередь поддерживает настройку маршрутов. Т.е. исходный /cars/car/update/id/<id> можно заменить в настройках приложения на что душе угодного, хоть на /cs-c-u-<id>, при условии, что этот адрес обрабатывается urlManager'ом.
В своем примере, я хотел показать лаконичность кода, который легко читается и его можно легко рефакторить.
Я ни в коем случае не претендую на правильный вариант кнопки -- исходное решение неплохо справляется со своим замыслом. Тут дело в другом: если я использую фреймворк, я следую его тенденциям.
А иначе, какой смысл использовать фреймворк, если можно накостылить велосипедов с нуля?!
Насчёт ссылок-кнопок - у меня самого было куча случаев, когда приходилось писать такие вот решения по причинам, которые я перечислил. Обычно это бывает в проектах, в которых подобные решения можно считать даже красивыми, потому что остальной код - это полный пиздец. Ну и опять же, как я уже писал - у PHP-программистов с фронтендом в целом жопа. Лучше нанимать отдельного человека на это, если есть возможность.