2010-08-02 2 views
2

Я использую .net в течение последних нескольких лет, и мне нравится, как вы можете добавлять элементы управления в любой момент страницы из любого места. Например, вы можете сказать Head.Controls.add(new LiteralControl("<link rel='stylesheet' type='text/css' href='styles.css' />")), даже если есть уже тело.Добавление элементов в другие элементы

Возможно ли это сделать в php? Мой сайт настроен таким образом, что у нас есть агенты, клиенты и художники (это для компании-производителя карт, которая хочет, чтобы приложение-клиент использовало офлайн-оффлайн на выставках). Форма добавления агента может иметь разные стили для формы добавления клиента. Поэтому я хочу иметь каждый тип в другой папке (например, агенты, клиенты и художники), каждая из которых имеет свою собственную таблицу стилей. Будет одна страница формы, в которой будут указаны параметры типа (художник, клиент и т. Д.), Режим (создание, редактирование) и необязательный параметр ID (в режиме редактирования). Я хотел бы иметь возможность звонить $agentForm->generateForm() и за один раз, а не то, что я сейчас делаю, а именно: $agentForm->generateForm() в теле и $agentForm->generateStyleTag, когда в голове (даже при создании тега тега запуска еще нет).

Хороший способ выразить это тем, что у меня есть тег Head и тег Body. В другой функции, называемой $agentForm->generateHTML(), я хочу сказать Body->addChild("bla") и Head->addChild("bla"). Это упрощает разработку новой страницы, так как обеспечивает стили и правильность раздела сайта, в котором находится пользователь.

Возможно ли достичь этого или это одно из основных различий между php и .net?

+0

Я думаю, что большинство моих вопросов нету на самом деле был правильный ответ, как таковой, поэтому 40%, вероятно, о праве .. – ClarkeyBoy

+0

Затем опубликуйте собственное решение и выберите его в качестве правильного ответа. –

+0

Иногда я не нахожу ответа, не останавливаюсь и не забываю об этом (или, пытаясь найти решение, возникают другие серьезные проблемы, которые я затем пытаюсь решить, и забыть об этом). Я не могу помочь, если я иногда отвлекаюсь. – ClarkeyBoy

ответ

2

Взгляните на рамки PRADO и рамки Yii. Они имеют иерархическую, основанную на компонентах философию, которая позволяет вложенность и состав, а также создание целого сайта из более мелких подключаемых компонентов.

+0

Недавно я просмотрел Prado, но на данный момент я думаю, что с экзаменом для пересмотра и 5 проектами, которые будут работать после экзамена (не говоря уже о работе/домашней охоте), я, вероятно, немного в данный момент чтобы узнать новую структуру в ближайшее время. Я обязательно сделаю это в будущем. Спасибо за предложение в любом случае. С уважением, Ричард – ClarkeyBoy

5

PHP по существу предназначен только для того, чтобы выкидывать строки в STDOUT, за исключением буферизации. Чтобы сделать эту работу, вам придется использовать систему шаблонов, которая поддерживает это, или сворачивать свою собственную. Существует не «встроенная» система шаблонов, если вы не подсчитаете, что загрузите все это в DOMDocument или что-то в этом роде, и выполните основные необработанные манипуляции с DOM, что было бы намного медленнее, и я бы не рекомендовал, если вы не планируете сделать много других модификаций DOM. Google для систем шаблонов PHP и проверьте, какой из них поддерживает ваши потребности.

3

Вам нужно что-то осознать. .NET - это ракурс , а не язык программирования. Вопрос идентичен Can you do this in C#. Поймите, что вы сравниваете Яблоки с апельсинами.

Язык PHP - это Тьюринг, поэтому да, вы можете это сделать. Это не значит, что код для этого написан еще (это может быть) или что это будет легко (кто знает). Это означает, что это возможно.

С учетом этого вам необходимо найти фреймворк, который сделает то, что вы хотите. Никакой язык не придет с такой операцией (поскольку он слишком ограничивает язык в целом). Таким образом, ваша задача больше не «Может ли PHP сделать это», но «мне нужно найти инфраструктуру для этого». Попробуйте взглянуть в рамки, и я готов поспорить, вы найдете свой ответ довольно легко ...

0

Как уже указывалось, PHP - это язык, а .Net - это фреймворк. Эти две вещи очень разные.

Если вы хотите использовать PHP как язык сценариев для .Net, всегда есть Phalanger