2012-01-31 16 views
1

У меня проблемы с пониманием того, где классы должны храниться в CI. Я создаю приложение, которое описывает/продает мобильные телефоны.CodeIgniter - где поставить функции/классы?

Я хотел бы, чтобы все мои функции (то есть getphone, getdetails и т. Д.) Проживали в одном классе Mobile - я понимаю, что этот файл следует называть Mobile.php и находиться в папке контроллеров.

Могу ли я иметь несколько функций внутри Mobile.php? Например.

public function getphone() { 
    xxx 
    xx 
    xx 
} 

public function getdetails() { 
    xxx 
    xx 
    xx 
} 

Или мне нужно поставить каждую функцию в свой класс?

Мне очень хотелось бы взглянуть на пример кода, который работает. Я просматривал документацию и Google в течение нескольких часов и пробовал всевозможные варианты URL-адреса, чтобы найти тестовый класс, но без большой удачи! Я даже возился с маршрутами и .htaccess ...

Все, что я пытаюсь достичь следующего:

Http: /// модель/HTC-Desire/будет перенаправлен на функция, которая принимает HTC-Desire в качестве параметра (так как мне это нужно для поиска в БД). Контроллер по умолчанию работает нормально, но после этого не может работать.

Любые идеи?

Благодаря

ответ

0

Да, вы можете иметь много функций в классе контроллера, как вы хотите. Они доступны по адресу /class/function.

Вы можете поймать параметры в функциях класса, хотя это нецелесообразно.

class Mobile extends CI_Controller{ 

    public function getPhone($phoneModel=''){ 
     echo $phoneModel; 
     //echo $this->input->post('phoneModel'); 
    } 
} 

http://site.com/mobile/getPhone/HTC-Rad теоретически будет эхо из "HTC-Rad". HOWEVER, специальные символы не приветствуются в URL-адресах в CI по умолчанию, поэтому в этом примере вместо вас может быть встречена ошибка «Запрещенные символы URI». Вам будет лучше сменить модель телефона (или любые другие параметры) через $_POST к контроллеру.

0

классы могут существовать как в Controllers и Models как CodeIgniter реализует MVC pattern. Я рекомендую прочитать больше о том, что, чтобы понять, как ваши классы/функции/др. могут быть лучше организованы.

В верхней части моей головы Pyro CMS - это приложение, созданное с помощью CodeIgniter, и исходный код свободно доступен. Я уверен, что есть другие.

10

На самом деле он работает так:

контроллеры и модели идут в свои перспективных папки, как вы знаете, это

Если вы хотите создать функции, которые не являются методами объекта, необходимо создать вспомогательный файл , Больше информации здесь: http://codeigniter.com/user_guide/general/helpers.html

Теперь, если вы хотите создать свои собственные типы данных (классы, не расширяющие модели и контроллеры), вы добавляете их в папку библиотеки.Так что, если, скажем, вы хотите создать класс «Car» вы создаете этот файл:

class Car{ 

    function __construct(){} 
} 

и сохранить его в папке библиотек в car.php

Чтобы создать экземпляр класса автомобиля вы должны выполните следующие действия:

$this->load->library('car'); 
$my_car = new Car(); 

Дополнительной информации о библиотеках здесь:
http://codeigniter.com/user_guide/general/creating_libraries.html

Смежные вопросы