mendel

mendel
Рейтинг
232
Регистрация
06.03.2008
demiux:
mendel, так вы участник олимпиады, откуда такая реакция?

Ну так я в большинстве случаев отказывался от олимпиады ссылаясь на то, что экскаватор лучше.

demiux:
А по поводу фреймворков, так сами же выше пригнали экскаватор чтобы кустик посадить

А это экскаватор действительно. И он лучше. Поскольку так мы экономим на НИОКР используя экскаватор а не кастомный инструмент умеющий только одни кустики сажать, только в одну почву и только в одно время года, и только в руках одного специально обученного садовника, разработанный в военно-космическом НИИ. А переплатили только за топливо, которое сами же и добываем.

Напоминает случай. Знакомый бывший нефтяник рассказывал полубайку в которой меня возмутило то, что они обогревали теплушки электричеством вырабатываемым дизелякой. Пока меня не мокнули в то где это происходило).

miltorg:
заинтересовался. Жду ваше такое супер-мгновенное решение. Правда очень интересно.
Вот та самая форма:

Ну вот пример формы выдаваемой этим кодом.

Закладки, валидаторы, подсказки, загрузка/удаление картинок и прочих файлов, вставка их в редактор (редактор прилагается) или в поле картинки (тут картинка для заставки), в поле даты сразу календарик выпадает чтобы проще было (отображен на картинке). Названия полей и подсказки естественно в языковых файлах. Форма сразу с токеном от XSRF.

В принципе я конечно слегка слукавил. Чтобы форма работала нужны еще два файлика (или точнее две записи в двух файликах) - описание полей и их текстовые названия.

В данном случае это что-то вроде


'news' => [ '#parent' => 'defaultPage',
'rules' => [ 'default' => [ 'type' => ['string',['defaultSave','value'=>'news']],
'route' => ['string',['defaultSave','value'=>'news:view']],
'showDate' =>['virtual',['defaultCopy','field'=>'created']]
],
],
'blocks' => [ 'default' => [ 'default' => ['title','preview','article','thumb','folder','created'],
'seo' => ['metatitle','breadtitle','menutitle','metadesc','slug'],
'slider' => ['needslider','slidertitle','slidertext','sliderimg'],
'admin' => ['parent_id','updated'],
],
],
],

и


'model/news' => [ '#parent' =>'model/defaultPage',
'#self' => 'Новость',
],

Что тоже небольшое лукавство, ведь у меня уже есть базовые модельки страниц, описанные вот так:


'defaultPage' => [ '#parent' => 'basicPage',
'rules' => [ 'default' => [ 'folder' => ['hidden','randId'],
// 'archive' => ['boolean'],
'needmenu' => ['boolean'],
//
'title' => [['string', 'maxlen'=>120],'required',['unique','fields'=>['parent_id']]],
'metatitle' => [['string', 'maxlen'=>120],['defaultCopy','field'=>'title']],
'breadtitle' => [['string', 'maxlen'=>60],['defaultCopyStrict','field'=>'title', 'maxlen'=>60]],
'menutitle' => [['string', 'maxlen'=>60],['defaultCopyStrict','field'=>'title', 'maxlen'=>60]],
'article' => [['article', 'maxlen'=>60000]],
'preview' => [['text', 'maxlen'=>500],['defaultCopyStrict','field'=>'article', 'maxlen'=>500]],
'metadesc' => [['text', 'maxlen'=>250],['defaultCopyStrict','field'=>'article', 'maxlen'=>250]],
'thumb' => [['string', 'maxlen'=>120],'img',['defaultModelField','modelName'=>'skinReg@skinReg','fieldName'=>'defaultThumb']],
'style' => ['string'],
//
'needslider' => ['boolean'],
'slidertitle' => [['string', 'maxlen'=>120]],
'slidertext' => [['text', 'maxlen'=>500]],
'sliderimg' => [['string', 'maxlen'=>120],'img'],
],
],
],

ну и русские описания:


'model/defaultPage' => [ '#parent' =>'model/abstractFormModel',
'#self' => 'Default страница',
'seo#Tab'=>'SEO-поля',
'slider#Tab'=>'Слайдер',
'admin#Tab'=>'Системные поля (не трогать)',

'id' => '№',
'id#help' => 'ID записи',
'parent_id' => 'Родитель',
'parent_id#help' => 'Родитель',
'type' => 'Тип',
'type#help' => 'Тип (моделька страницы)',
'route' => 'Роут',
'created' => 'Дата создания',
'created#help' => 'Дата создания',
'updated' => 'Дата изменения',
'updated#help' => 'Дата изменения',
'thumb' => 'Картинка для заставки',
'thumb#help' => 'Картинка для заставки',
'slug' => 'ЧПУ',
'slug#help' => 'ЧПУ',
'title' => 'Заголовок',
'title#help' => 'Заголовок',
'metatitle' => 'Заголовок (meta)',
'metatitle#help' => 'Метатег title',
'breadtitle' => 'Хлебные крошки',
'breadtitle#help' => 'Хлебные крошки (заголвок в навигационном меню)',
'menutitle' => 'Заголовок меню',
'menutitle#help' => 'Заголовок меню',
'article' => 'Текст статьи',
'article#help' => 'Текст статьи',
'preview' => 'Краткое описание',
'preview#help' => 'Краткое описание',
'metadesc' => 'meta description',
'metadesc#help' => 'meta description',
'needmenu' => 'Выводить в меню',
'needmenu#help' => 'Выводить в меню',
'style'=>'Стиль',
'style#help'=>'Обычно класс стиля в админке, иногда что-то еще..',

'needslider' => 'Выводить на слайдере',
'needslider#help' => 'Выводить на слайдере',
'slidertitle' => 'Заголовок слайдера',
'slidertitle#help' => 'Заголовок слайдера',
'slidertext' => 'Текст слайдера',
'slidertext#help' => 'Текст слайдера',
'sliderimg' => 'Для слайдера',
'sliderimg#help' => 'Для слайдера',
],

Но лукавство действительно небольшое, ведь

а) всё это давно уже сделано и переиспользуется повторно, лишь в пару кликов меняется то что отличается.

б) в принципе это данные а не код, и да, могут создаваться кликами мышки, просто мне пока удобнее это писать в коде.

И да, код у меня 100% мой (за исключением фронт-энд библиотек вроде бутстрапа и сугубо частных случаев вроде PhpMailer-а), так что когда приведете код "той самой формы" которую делаете за 30 строк, то не хвастайтесь чужими фреймворками. Хотя если вы можете сделать тоже самое с помощью чужого фреймворка то вы молодец, и вырастете в моих глазах).

png miltorg.png
demiux:
Вы забыли про третьих - приходят и советуют как надо делать, не вникая в тему. Не предлагая правильных решений.

Не надо вот это вот ;)

Я предложил!!!!!один1

Инкрементарные бекапы есть?

SeVlad:
Абырвалг..

Ясно. Понятно. Убедительно. Авторитетно. И главное - классика)

SeVlad:
Единственное что, я в горячке написания редактирования не увидел затесавшийся лишний "НЕ":

Ы) На счет "выключать правильно не надо, и так сойдет" я оказывается был прав.

оказывается суть в том что "клеить зеркала не надо, зеркальщик лучше тебя разберется".))) И это на сёрче. Гы.

miltorg:
С формы отправляем кучу всего. Проверяем на правильность ввода. Записываем в базу. Выводим полученный результат...

Это типа вот так?

Создать форму (в шаблоне):


<?=view('widget/form',$model);?>

Получить из POST и сразу проверить на валидность всех полей:


$model = s()->post->getModel('feedback');

Если всё введено правильно, то сохраним и редиректим, если еще ничего не введено или введено с ошибками, то выведем форму (с сообщениями об ошибках у каждого поля, если есть ошибки).


if(!$model->isNew() AND $model->isValid()) {
$model->save();
redirect(['index:index']);
} else {
$page->model = $model;
$page->show();
}

9 строк, задача чуть пошире чем у вас.

3 минуты на написание, и что самое главное -задача уже решена. В стандартном контроллере. Нужно просто указать нужный контроллер. Ни одной строки.

А вот если нужно кастомизировать. Сделать красивый дизайн и т.п. Тут уже может и несколько часов возникнуть. особенно с выяснениями потребностей клиента).

miltorg:
Нормальные пацаны всё уже решили давно в теме:

Решили что? Задачку от Милторга? А за нее платят?)

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

Давно не игрался, всё давно настроено, но на глаз вроде нормальный набор тегов это полтора-два десятка тегов и еще столько же атрибутов, да не всяких, а только у своих тегов. Плюс закрывающие теги. Плюс фильтрация значений атрибутов чтобы не было всяких javascript: в ссылках и прочих прелестей.

Писать ТАКОЕ на регулярках? Серьезно?) А в следующем проекте нужен будет чуть другой набор тегов. Допиливать? Или настройки вынесем?)

Ну и вишенкой - регуляркой не востановить недостающие закрывающие теги во всех контекстах. В принципе не решаемая задача поскольку регулярки не тьюринг-полные.

Задача решается или установкой готового пакета (5 минут, если во фреймворке его еще нет) и при необходимости (обычно не надо) настройки его под свою специфику (еще 5-7минут). Или если хочется поиграться или задача специфическая, то от одного дня до недели (в зависимости от конкретной задачи, неделя если надо настройки, тесты и все такое) на написание своей библиотеки.

И нет, здесь не будет регулярок. Лично я бы наверное писал на основе SimpleXMLIterator. Это наиболее подходящий инструмент, по крайней мере мне так кажется сходу.

SeVlad:
Так что если и делать, то доступным по 2м протоколам.
mendel:
вот эту вот вторую версию ты как будешь от поисковиков скрывать?
SeVlad:
Её НЕ нужно скрывать. Для ПС это НЕ зеркала.
mendel:
Пруф пожалуйста. Я допускаю что что-то поменялось, и был бы только рад.
SeVlad:
Развидь слова про ДВА протокола.

Сам предложил два протокола. Сам же теперь хочешь развидеть свои же слова.

В качестве пруфа приводишь СОБСТВЕННЫЕ слова выделенные красным.

Прелесть. Просто прелесть. ;)

При этом в собственном же скрине, сам де процитировал расшифровку почему ты не прав.

Гуглоид однозначно расшифровал, что:

"два равных результата поиска" == "сигналы для двух результатов поиска равны",

и соответственно "два равных результата поиска" != "две копии ОДИНАКОВОГО текста".

Т.е. два сайта с одинаковыми показателями влияющими на поиск (релевантность контента, "крутизна сайта" и т.п.) будут сортироваться по принципу - с хттпс впереди. Всё.

Никак это не связано с твоим бредовым предложением -делать две версии.

То, что хттпс не имеет положительного влияния на ранжирование - ни мной ни кем-то другим адекватным, никогда не оспаривалось. Даже идея делать НОВЫЙ сайт на хттп - может быть умеренно разумной. Но вот две версии - бред. Аргументов в защиту этого предложения ты не привел. Вместо этого перешел на личности и стал опять вываливать поток сознания на тему недостатков хттпс. Что подтверждает чисто эмоциональность твоей позиции. Тебя обижает слово бред и ты теряешь способность мыслить логически? Ну ок, прости что наступил на больную мозоль. Давай считать это просто ошибкой. Если я скажу "идея делать две версии это полная ошибка" - ты успокоишься? ;)

SeVlad:
На вот, малую толику.

"Малая толика" чего? Простыня на полстраницы. "первоисточник" как же.

И ни слова по теме. Ты утверждал что поисковик не разделяет https и http зеркала. Мол один сайт и сам выбирает какой брать. Клеить не надо и всё такое.

Я попросил пруфы. Ты прислал ссылку на собственное полотно букафф. Девять ссылок вообще не по теме. Десятая околотематическая "Google: HTTPS даёт преимущество при выборе между двумя равными результатами поиска".

В которой написано ровно то, что написано в названии. Если натянуть ее на глобус, то у нас выйдет два зеркала на двух разных протоколах, которые будут конкурировать между собой и выберут скорее всего https, но только если они будут одинаковы, но не факт ибо у них как минимум будет отличаться ссылочная. масса. Разорвали ссылочную, разорвали поведенческое, создали дубли в индексе и радуемся что в выдаче будет только одна копия.)

Это мне напоминает моего преподавателя по САПР (да, да, САПР) во времена вин95. Тогда компы были в основном AT, ATX был редок. И он возражал мне, что ничего страшного, выключать комп кнопкой питания (которая тогда была механическим тумблером) это нормально. А Пуск/ЗавершениеРаботы это фича для ускорения включения (ведь без нее всего-то скандиск включается, но это норм).

Учи матчасть, развивай критическое мышление. Ты ведь не глупый, вполне можешь подтянуть свой уровень если перестанешь упрямствовать.

Всего: 1906