Codeigniter HMVC и вызов представления из jQuery

Новое в HMVC в Codeigniter.

Динамическая форма позволяет создавать новые «сегменты», когда пользователь щелкает ссылку.

В настоящее время сегмент html и php находится в module/view/segment_view.php. Для представления также требуются динамические переменные php.

Как я могу «загрузить представление» с помощью jQuery? Я понимаю, что не могу напрямую загрузить представление из jQuery, но не понимаю, как структурировать контроллер для вызова AJAX. Кажется, это не сильная сторона Codeigniter?

EDIT:
"Сегмент" находится внутри формы. Форма всегда имеет 1 сегмент. jQuery может добавить больше сегментов. Для каждого сегмента требуются php-массивы для ввода формы и проверки.

Вот урезанная версия файла form_view

for ($i=1; $i<=$number_of_segments; $i++) {

    $data['location'] = array(
        'name'  =>  "segment[$i][location]",
        'value' =>  set_value("segment[$i][location]"),
        'maxlength' =>  '255',
        'size'  =>  '30'
    );  
 ?>
    <div class="area">
        <div class="row"><h2>Segment <?php echo $i;?></h2></div>

        <?php 
        $this->load->view('module/segment_view', $data);
        ?>

    </div> <!--/div class="area"-->
<?php
}    //end for
?>

Хорошо, так что на самом деле это не отделяет логику приложения от представления, не так ли? Ха-ха. Итак, как лучше всего структурировать это, чтобы код был HMVC и к нему можно было получить доступ из контроллера/представления php, а также из jQuery?


person csi    schedule 23.06.2011    source источник


Ответы (1)


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

Если вы хотите сделать что-то «только для ajax», вы можете использовать эту функцию:

if ($this->input->is_ajax_request()) // Do ajax stuff

Примерами могут быть загрузка фрагментов представления или json. Вам не нужно создавать методы «только ajax» в вашем контроллере, вы можете использовать эту функцию из существующих методов контроллера, чтобы сделать что-то другое, если это запрос ajax.

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

person Wesley Murch    schedule 23.06.2011
comment
спасибо, и я считаю, что is_ajax_request - это то, что я ищу, но я все еще пытаюсь полностью понять правильный способ реализации сложного HMVC. Пожалуйста, проверьте мои правки, если можете. Спасибо еще раз. - person csi; 23.06.2011
comment
@ChristopherIckes: Мне жаль это признавать, но, увидев ваше редактирование, я до сих пор не могу понять, что вы пытаетесь сделать или с чем у вас проблемы. Насколько я могу судить, на самом деле нет ничего, связанного с HMVC или jQuery. - person Wesley Murch; 23.06.2011
comment
Ха-ха, это правда! Но is_ajax_request() был ответ. Я разделил вышеуказанный вопрос в контроллере и представлении и удалил логику представления. Теперь я могу запросить нужные мне детали с помощью is_ajax_request(). Работает как шарм теперь, когда идея разработана и код HMVC, а не тарабарщина. Спасибо. - person csi; 23.06.2011