2016-07-15 14 views
0

ModellKreiere individuelle URL In 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; 
} 

Controller:

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

Ausblick:

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

Ich möchte einerstellenKombination von title und id wie ich in Funktion get_url() durchgeführt.

Jetzt Problem:

ist, wie ich das nennen kann get_url() in get_footer_pages() die URL aller Ergebnisse von get_footer_pages() zu machen und diese URL in meinem VIEW in href verwenden?

Antwort

0

Wenn Sie diese Funktion in allen Ihren Ansichten verwenden möchten, wäre es besser, sie in helper zu platzieren (und stellen Sie sicher, dass Sie diesen Helfer automatisch laden). Dann Ihrer Ansicht nach werden Sie haben:

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

Dies würde die URL on the fly generieren - wann immer Sie es angezeigt werden müssen, anstatt alle URLs zu erzeugen, auf einmal und dann wieder Iterieren durch sie, um anzuzeigen, sie in der Aussicht.

Jetzt, da Sie Ihre URLs in der Fußzeile haben, müssen Sie sie richtig behandeln. Zunächst müssen Sie in Ihrer routes-Datei eine Route erstellen, die die gewünschten URLs abfängt und an den Controller weiterleitet, der die Aktion verarbeiten soll. Sie haben diesen Teil nicht angegeben, daher ist hier ein Beispiel, auf dem Sie Ihre eigenen Routen erstellen können.

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

Was das bedeutet ist, wenn die Anwendung eine Anfrage wie example.com/product/1 empfängt, ist es tatsächlich ruft die product_lookup Funktion von catalog Controller und 1 als Funktionsargument übergeben.

+0

Ihre Mittel i muss eine Datei einen beliebigen Namen im Hilfsordner erstellen, und dann 'get_url()' in der Hilfsdatei speichern.und rufe diese Funktion aus meiner Sicht auf? –

+0

Ja. Und Sie müssen diese Hilfsdatei zu dem Helfer-Autoload-Array in Ihrer 'application/config/autoload.php'-Datei hinzufügen. – trajchevska

+0

Wenn ich dann alle Funktionen von 'get_url()' aus meiner Sicht ausführe? –

0

Verwenden Helfer:

eine Datei erstellen und den folgenden Code in sie setzen.

<?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(); 
    } 
    } 

Speichern Sie dies in der Anwendung/Helfer /. Wir nennen ihn "my_helper.php"

Mit dem Helper

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

// You can also use this; 

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

Ihr Modell Methode:

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; 
    } 

In veiw:

<?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 } ?>