2013-03-05 3 views
2

Мы создаем 2 приложения, основанные на той же кодовой базе кода. Оба этих приложения используют XML-файлы на основе языка (мы не можем использовать собственный CI lang lib), поэтому у нас есть один файл XML на каждый язык для каждого приложения.условный sprintf codeigniter php

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

Пример XML экстракт для приложения 1 может быть:

<instructions> 
    <instruction>**<strong>**Lorem ipsum dolor sit**</strong>** amet, consectetur adipisicing elit, sed doeiusmod tempor incididunt ut labore et dolore magna aliqua</instruction> 
</instructions> 

И пример приложения 2 экстракт может быть:

<instructions> 
    <instruction>Lorem ipsum dolor sitamet, consectetur adipisicing elit, sed doeiusmod tempor incididunt ut labore et **<br /><br />**dolore magna aliqua</instruction> 
</instructions> 

В принципе, эти XML-файлы должны содержать разную разметку для их форматирования, когда они выводятся в PHP. Оба вышеприведенных примера будут отображаться как команда $ app-> instructions->.

В настоящее время я достиг этого вариаций в форматах с использованием держателей CDATA, которые я затем sprintf и заменил. Однако это недостаточно гибко, на мой взгляд, нужно несколько параметров в функции sprintf для замены того, что потенциально может быть большим количеством элементов разметки. Пока что мне нужно заменить 6 жетонов CDATA.

Подтвердите это тем фактом, что мне также пришлось сделать условие sprintf на основе загружаемого приложения. Еще хуже стало то, что я решил сделать это в контроллере, чтобы не загрязнять HTML ненужным PHP.

Чтобы вырезать в погоню, что я хотел бы достичь заключается в следующем:

  • XML хранится ясно из HTML-разметки
  • HTML хранится подальше, или, по крайней мере, свести к минимуму использование, PHP
  • не
  • Определенно нет HTML в контроллере

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

+1

BTW, каков ваш конкретный вопрос программирования? – hakre

+0

Ну, я думаю, его может кто-нибудь порекомендовать способ отделить логику, оставаясь гибким по расширяемости, учитывая сценарий, который я объясняю выше. – user1728296

ответ

0

Ваш вопрос граничен, чтобы ответить на него, но я все равно стараюсь. Вы сформулировали три требования:

  1. XML хранится ясно из HTML-разметки
  2. HTML хранится подальше, или, по крайней мере, свести к минимуму использование, PHP
  3. Определенно нет HTML в контроллере

Для сохраните XML без разметки HTML, просто не помещайте в него какую-либо разметку HTML. Или, если вы хотите иметь HTML-код, правильно закодируйте его. Как с CDATA или просто XML сущностей:

<instructions> 
    <instruction> 
    &lt;strong&gt;Lorem ipsum dolor sit&lt;/strong&gt; amet, consectetur 
    adipisicing elit, sed doeiusmod tempor incididunt ut labore et dolore magna 
    aliqua 
    </instruction> 
</instructions> 

XML не имеет никаких проблем с этим на всех, и вы не должны иметь никаких проблем, чтобы получить это значение, а также. Так что для 1.).

Для 2.) Я не понимаю, что вы имеете в виду. Если вы хотите оставить это в стороне от PHP, не помещайте PHP внутри.Если вы помещаете PHP внутри, вам нужно понять, что вам также необходимо его закодировать (например, HTML), иначе вы создадите так называемые инструкции обработки (pi), которые могут быть не самой проблемой сами по себе, однако при извлечении данных вы можете сталкиваются с проблемами. Но в любом случае, поскольку эти переводы являются статическими данными, вы все равно не должны помещать PHP.

Логика, связанная с этими статическими данными, скорее всего, принадлежит к виду и/или контроллеру.

Для 3.) просто не помещайте HTML-код внутри контроллера, и вы должны быть в порядке, чтобы пойти (поместите его в то, что пользователи Calligniter обращают на просмотр, то есть компонент для HTML-шаблонов в Codeigniter).

+0

Хакре - спасибо за ваш ответ. Проблема, с которой я столкнулась, в основном связана с возможностью расширения и разделения кода в среде MVC. XML не должен содержать разметки форматирования, аналогично контроллеру. Представление CI должно содержать как можно меньше логики. Так что я пытаюсь найти способ отделить логику от функции, будучи максимально расширяемой. Мое использование sprintf с 5 или 6 параметрами замены чувствует себя ... грязным. – user1728296

+0

Тогда я предлагаю вам не помещать это там. Я уже задавался вопросом, почему вы это делаете. Просто держите HTML и PHP из файлов перевода, и все должно быть в порядке. – hakre