2016-07-15 3 views
0

Модельсделать собственный URL в CodeIgniter

function get_footer_pages(){ 
    $query=$this->db->where('section','footer'); 
    $query=$this->db->get('pages'); 
    if($query->num_rows()>0){ 
     $result=$query->result_array(); 
     return $result; 
    }else{ 
     return false; 
    } 
} 
function get_url($row){ 
    $title=$row['title']; 
    $not_allowed=array('/','?','\"','&','"',':','%','\'',','); 
    $title=str_replace($not_allowed,'',$title); 
    $title=str_replace(' ','-',$title); 
    $title=$title."_".$row['id']; 
    return $title; 
} 

Контроллер:

$data['footer_pages']=$this->Home_model->get_footer_pages(); 

Вид:

<?php foreach($footer_pages as $f_pages){ ?> 
     <li><a href="<?php echo $f_pages['url'] ?>"><?php echo $f_pages['name'] ?></a></li> 
<?php } ?> 

Я хочу создать url сочетание title и id как я выполнил в функции get_url().

Теперь проблема:

как я могу назвать это get_url() в get_footer_pages() сделать URL всех результатов get_footer_pages() и использовать этот адрес в моем VIEW в href?

ответ

0

Если вы собираетесь использовать эту функцию во всех своих представлениях, было бы лучше разместить ее в помощнике (и убедитесь, что вы автоматически загрузите этот помощник). Затем, по вашему мнению, вы будете иметь:

<?php foreach($footer_pages as $f_pages){ ?> 
    <li><a href="<?php echo get_url($f_pages) ?>"><?php echo $f_pages['name'] ?></a></li> 
<?php } ?> 

Это будет генерировать URL на лету - всякий раз, когда вам нужно, чтобы отобразить его, вместо того, чтобы генерировать все адреса сразу, а затем снова итерация через них, чтобы отобразить их в представлении.

Теперь, когда у вас есть свои URL-адреса в нижнем колонтитуле, вам необходимо правильно их обработать. Во-первых, вам нужно создать маршрут в вашем файле маршрутов, который поймает нужные URL-адреса и передаст их контроллеру, который должен обработать действие. Вы не указали эту часть, так что вот пример, на основе которого вы можете создавать свои собственные маршруты.

$route['product/:num'] = 'catalog/product_lookup/$1'; 

Что это делает, когда приложение получает запрос как example.com/product/1, он на самом деле вызывает product_lookup функцию catalog контроллера и передать 1 в качестве аргумента функции.

+0

ваши средства я необходимо создать любое имя файла в вспомогательной папке, а затем 'get_url()' сохранить в вспомогательном файле.и вызвать эту функцию на мой взгляд? –

+0

Да. И вам нужно будет добавить этот вспомогательный файл в массив автозагрузки помощников в файле 'application/config/autoload.php'. – trajchevska

+0

если я выполняю все функции 'get_url()' на мой взгляд, то? –

0

Использование помощника:

Создайте файл и поместите следующий код в него.

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

    if (! function_exists('getPages')) 
    { 
    function getPages() 
    { 
     $ci = & get_instance(); 
     $ci->load->model('yourModelname'); 
     return $ci->yourModelname->get_footer_pages(); 
    } 
    } 

Сохраните это приложение/помощники /. Мы будем называть его "my_helper.php"

Использование помощника

$this->load->helper('my_helper'); 

// You can also use this; 

    $autoload['helper'] = array('new_helper'); 

Ваш Модель Метод:

function get_footer_pages() 
{ 
    $data = array(); 
    $this->db->where('section','footer'); 
    $query = $this->db->get('pages'); 
    if ($query->num_rows() > 0){ 
     foreach ($query->result_array() as $row) { 
      $title = $row['title']; 
      $not_allowed = array('/','?','\"','&','"',':','%','\'',','); 
      $title = str_replace($not_allowed,'',$title); 
      $title = str_replace(' ','-',$title); 
      $title = $title."_".$row['id']; 
      $data['urls'] = $title; 
     } 
    } 
    return $data; 
    } 

В Вей:

<?php 
    $footer_pages = getPages(); 
    foreach($footer_pages['urls'] as $f_pages){ ?> 
    <li><a href="<?php echo $f_pages['url'] ?>"><?php echo $f_pages['name'] ?></a></li> 
<?php } ?> 
Смежные вопросы