Добрый день.
С Kohana начал только знакомиться. Вот сделал сайт вызитки вроде всё получилось и роуты и мультиязычность.
Теперь стоит 2 задачи:
1. Из БД выводить все и одну запись
Контролер:
Код:
class Controller_Page extends Controller_Temp
{
//News All
public function action_news()
{
$section = '4';
$articles = array();
$content = View::factory('/pages/v_news')
->bind('articles', $articles);
$articles = Model::factory('Article')->get_all($section);
$this->template->seo_title = __("lang_news");
$this->template->content = $content;
}
//News All
//News Details
public function action_news_details()
{
$id = $this->request->param('id');
$content = View::factory('/pages/v_news_details')
->bind('article', $article);
$article = Model::factory('Article')->get_one($id);
$this->template->seo_title = $article['title'];
$this->template->content = $content;
}
//News Details
}
Модель:
Код:
class Model_Article extends Model
{
protected $_tableArticles = 'articles';
//Get all articles
public function get_all($section = '')
{
$query = "SELECT * FROM ". $this->_tableArticles ." WHERE `status` = '1' AND `section` = '".$section."' ORDER BY `id` DESC";
return DB::query(Database::SELECT, $query)
->execute();
}
//Get one article
public function get_one($id = '')
{
$query = "SELECT * FROM ". $this->_tableArticles ." WHERE `id` = :id LIMIT 1";
$query = DB::query(Database::SELECT, $query, FALSE)
->param(':id', (int)$id)
->execute();
$result = $query->as_array();
if($result)
return $result[0];
else
return FALSE;
}
}
2. Из БД выводить запиви по POST запросу
Контролер:
Код:
class Controller_VehicleVin extends Controller_Temp {
//Vehicle VIN
public function action_get()
{
if($_POST) {
$search_vehicle_vin = $_POST['search_vehicle_vin'];
$vehiclevin = Model::factory('Vehiclevin')
->get_vin_data($search_vehicle_vin);
}
$content = View::factory('/pages/v_vehicle_vin')
->bind('vehiclevin', $vehiclevin);
$this->template->seo_title = 'Vehicle VIN';
$this->template->content = $content;
}
//Vehicle VIN
}
Модель:
Код:
class Model_Vehiclevin extends Model
{
//Vehicle VIN Table
protected $_table_name_vin = 'base_for_vin';
//Photos Table
protected $_table_name_photos = 'base_for_vin_photos';
//Vehicle VIN
public $search_vehicle_vin;
//Get Details Information
public function get_vin_data($search_vehicle_vin = '')
{
$query = "SELECT * FROM ". $this->_table_name_vin ." WHERE `vin` = '".$search_vehicle_vin."' LIMIT 1";
$query = DB::query(Database::SELECT, $query, FALSE)
->execute();
$result = $query->as_array();
if($result)
return $result[0];
else
return FALSE;
}
//Get Photos
public function get_photos_data()
{
$base_id = $this->get_vin_data();
$query = "SELECT * FROM ". $this->_table_name_photos ." WHERE `base_id` = '".$base_id."'";
return DB::query(Database::SELECT, $query)
->execute();
}
}
Вопросы:1. Правильно ли я реализвал всё в обоих задачах?
2. Со стороны безопасности, у меня сейчас SQL Injection, при переписывании ORM и подстановки валидации думаю пропайдёт она да?
3. Где я указывал в запросе LIMIT 1, там должно быть $result = $query->as_array(); ?
4. Подскажите как подключить валидацию
5. Подскажите как переписать под ORM
спс.Ув.