Codeigniter HMVC и вызов вида из jQuery - PullRequest
2 голосов
/ 23 июня 2011

Новое в HMVC в Codeigniter.

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

В настоящее время html & php сегмента находится в модуле / view / сегмент_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-контроллера / view, а также из jQuery?

1 Ответ

3 голосов
/ 23 июня 2011

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

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

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

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

...