Създаване на модул в CodeIgniter за динамични страници

Ticketa

Registered
Има ли готов модул за динамични страници в CodeIgniter и да се генерира автоматично меню или трябва да си го напиша сам (което май е най-добре, но?)? Интересувам се понеже тепърва навлизам в него, а ми се вижда интересно.

Става на въпрос, страниците да се създават в MySQL.
 
:D :D

Не си падам по обясненията, но ще поясня. Искам да мога да създавам страници в базата данни и да се генерира навигация с въпросните страници т.е.
exp;
page.php?pID=1 - страница - about
page.php?pID=2 - страница - portfolio
page.php?pID=3 - страница - stats
page.php?pID=4 - страница - bulgaria

Като всяка страница си има title (динамично) и описание. Сега предполагам си ме разбрала.
 
Еми, да, можеш да си направиш. Дори е супер лесно.

База данни, контролер с методи save, view, edit и модел за страниците.

Линковете ти могат да бъдат генерирани от сорта на:
Код:
localhost.dev/pages/view/1
Или ако добавиш някакъв slug уникален за страница ще стане нещо от сорта на:
Код:
localhost.dev/pages/view/slug

А чрез routing-a може да смениш направо да ти излизат (без view параметъра в URL-a):
Код:
localhost.dev/pages/slug

Ето и sample код, не съм го пробвала, но главното е това. Има доста коментари, надявам се да ти помогне.

1. Контролер; ("по-оцветена" версия)
Код:
//Controller methods

#Method за добавяне на страница.
public function add()
{
	//О, забравила съм как се пише на codeigniter Q_Q
	//Такам, проверих :D

	//Ако формата е събмитната
	if($_POST)
	{
		//Зареждаме form_validation
		$this->load->library('form_validation');
		//Някакви validations
		$this->form_validation->set_rules('name', 'Име на страницата', 'required|min_length[3]|max_length[12]|trim');
		//Проверяваме дали са верни валидациите
		if($this->form_validation->run() == false)
		{
			//препращаме към същата страница или друга
			//и показваме грешките
		}
		else
		{	
			//Забележка: използваме ключове, които отговарят на полета в таблицта.
			$info['page_title'] = $_POST['name']; //Това вече зависи от формата, която имаш в view-то.
			$info['page_content'] = $_POST['page_content']; //Това също.
			//Зареждаме модела, ако не го правиш автоматично.
			$this->model->load('pages');
			//Прехвърляме информацията от $_POST към модела
			$add_page = $this->pages->add_page($info);
			
			//Малко USER FRIENDLY съобщения.
			if($add_page)
				$this->session->set_flashdata('success', 'Успешно добавихте страницата.');
				//Виж в User Guide-a как се ползват flash messages, ако не ти е ясно ^_^
			else
				$this->session->set_flashdata('failure', 'Възникна грешка!');
			//Препращаш към страницата с форма или за показване на съобщение.
			redirect();
		}
	}
	else
	{	
		//Ако не е събмитната редиректваш или показваш view-то. =)
		redirect(base_url);
	}
}

#Method за показване на страница
//Забележка в routes.php вероятно ще трябва да добавиш нещо от сорта на
//$route['pages/view/(:num)'] = 'pages/view';
//ако ти генерира 404, когато достъпваш 
public function view($id = NULL)
{
	//Взимаме последния segment ot УРИ
	$id = end($this->uri->segments);
	//Зареждаме модела, ако не е зареден автоматично
	$this->model->load('pages');
	$get_page = $this->pages->get_page($id);
        $data['get_page'] = $get_page[0];
	//Ако има такава страница я показваме
	if(!empty($get_page))
	{
		$this->load->view('your_view', $data['get_page]);
	}
	else
	{
		//Пускаме ерор FOUR OH FOUR
		show_404();
	}
}

2. Модел; ("по-оцветена" версия)
Код:
//Model's methods
public function add_page($info)
{
	//Ако си видял забележката преди добавянето на страница в контролера
	//добавянето на страница е много лесно чрез CodeIgniter Active Records
	//или подобието на AR в CodeIgniter :D
	$q = $this->db->insert('pages', $info); //pages е таблицата, в която да се вкара
	return (boolean)$q; //дали е изпълнено успешно 
}
public function get_page($id)
{
	$query = $this->db->get_where('pages', array('id' => $id));
	
	return $query->result(); // ще върне резултат в фромата на Object
	//а ако искаш да е като масив ползвай $query->result_array();
}
 

Back
Горе