アップデート:
以下の Sheldon のコードを試してみましたが、いくつかの問題が発生しました。
Unable to load the requested file .phpの行を使用する
$this->load->view($page->template, array('content' => $page->content), TRUE);
場合、それを変更すると$page->content
正常に動作します。インデックス関数を他のコントローラーに配置すると、uri セグメントの設定に関係なく、既定のホーム コントローラーが読み込まれます。これが機能するようにモデルを調整するにはどうすればよいですか?
元の質問:
メインのサイト構造を格納する template.php ファイルがあります。「ホーム」というページがあるとします。$title
データベースからとデータを設定したいと思い$content
ます。
各ページのビューとコントローラーも設定しました。私が試してみました:
$this->cms_pages->name;
これは何も生成しません。URI セグメントを取得する必要があることはわかっていますが、使用しているため、これを機能/$sales->name
させるために変更する必要があるかどうかはわかりません$sales->id
。名前で取得したいと思います。ベスト プラクティスも重要です。
次のようなことができる方法はあり$this->cms_pages->id->1->name
ますか?
モデル
function getCMSPages() {
$query = $this->db->get('pages');
if($query->num_rows() > 0) return $query->result();
}
テンプレート
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Home extends CI_Controller {
public function index()
{
$data['cms_pages'] = $this->navigation_model->getCMSPages();
$data['title'] = 'Ccho';
$data['content'] = $this->load->view('home', NULL, TRUE);
$this->load->view('template', $data);
}
}
テンプレート
$stylesheetCSS = array('href' => 'includes/css/style.css', 'rel' => 'stylesheet', 'type' => 'text/css', 'media' => 'print');
echo doctype('html5');
?>
<head>
<title>Housemovers : <?php echo $title ?></title>
<?php echo link_tag($stylesheetCSS);?>
</head>
<body>
<div id ="wrapper">
<header>
<p>content</p>
</header>
<nav>
<ul>
<?php if($this->session->userdata('logged_in')): ?>
<li><?php echo anchor('#','Edit Pages');?>
<?php if(is_array($cms_pages)): ?>
<ul>
<?php foreach($cms_pages as $page): ?>
<li><a href="<?=$page->title?>"><?= $page->title?></a></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
</li>
<li><?php echo anchor('#','Gallery');?>
<ul>
<li><?php echo anchor('admin/addgallery','Add Gallery');?></li>
<li><?php echo anchor('admin/uploadimage','Upload Image');?>
</li>
<li><?php echo anchor('#','Delete Gallery');?></li>
</ul>
</li>
<li><?php echo anchor('#','Sales');?>
<ul>
<li><?php echo anchor('admin/addsale','Add Sale');?></li>
<li><?php echo anchor('#','Edit Sale');?>
<?php if(is_array($sales_pages)): ?>
<ul>
<?php foreach($sales_pages as $sale): ?>
<li><a href="editsale/index/<?=$sale->id?>"><?= $sale->name?></a></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
</li>
<li><?php echo anchor('#','Delete Sale');?></li>
<li><?php echo anchor('admin/home/logout','Log Out');?></li>
</ul>
</li>
<?php else: ?>
<ul>
<li><?php echo anchor('home','Home');?></li>
<li><?php echo anchor('about','About Us');?></li>
<li><?php echo anchor('gallery','Gallery');?></li>
<li><?php echo anchor('testimonials', 'Testimonials');?></li>
<li><?php echo anchor('sales','Sales');?></li>
<li><?php echo anchor('contact','Contact Us');?></li>
</ul>
<?php endif; ?>
</ul>
</nav>
<section id="content">
<h1><?= $title ?></h1>
<p><?= $content ?></p>
</section>
<footer>© Houses LTD <?php echo date('Y');?></footer>
</div> <!-- Wrapper Close -->
</body>