ci ディレクトリ構造)
リーリーアクセスフォーム applicationcontrollerswelcome.phpに関数を追加します: リーリー
エントリーファイル.php/controller/action新しいコントローラーを自分で作成します (hello.php:) リーリー
注意:
アンダースコアで始まるメソッド名には正常にアクセスできず、間接的にのみアクセスできます。
applicationviewsview_test.php または applicationviewsviewtest.php (このメソッドは主に、管理を容易にするために同じタイプのビューを同じフォルダーに配置しやすくするためのものです) リーリー コントローラー: リーリー または:
リーリー効果:
変数の割り当てコントローラーからビューにデータを転送、コントローラー:
リーリー表示:
リーリー効果:
public
function addView() { $this->load->vars("タイトル","値"
);$list = 配列( 配列('id'=>1,'name'=>'jack','email'=>'123@123.com'), 配列('id'=>2,'name'=>'jack2','email'=>'1233@123.com'), 配列('id'=>3,'name'=>'jack3','email'=>'12333@123.com') ); $data['new_title']="タイトル"; $data['リスト']=$リスト; $this->load->vars($data); $this->load->view("view_test"); $this->load->view("フッター"); } view_test を表示: リーリー フッターを表示: リーリー 表示効果: uriパラメータ取得 コントローラー: リーリー 効果:
加载数据库
这个操作在MVC中是放到model中做的。
在\application\config\database.php中配置数据库参数,注意dbprefix和swap_pre这两个参数。在php中写的是前缀,会默认当作swap_pre,然后放到数据库中的时候会转成dbprefix,但是最好两个都弄成一样的。
还有$active_group,默认是default,如果要连接两个数据库,把default另外取名,然后在函数中写明参数就OK。
必须继承数据核心类CI_Model,同时重载父类中的构造方法。
<span>class</span> Model_name <span>extends</span><span> CI_Model { </span><span>function</span><span> __construct() { parent</span>::<span>__construct(); } }</span>
在每次使用数据库的时候,都需要加载一次数据库:
<span>$this</span>->load->database();
为了方便,可以将数据库的加载设置成自动加载,在\application\config\autoload.php中。
<span>$autoload</span>['libraries'] = <span>array</span>('database');
对于数据库访问对象,装载到超级对象的属性中 $this->db
<span>$res</span> = <span>$this</span>->db->query(<span>$sql</span>);<span>//</span><span>返回对象</span> <span>$res</span>->result();<span>//</span><span>返回数组,数组中是一个一个的对象</span> <span>$res</span>->result_array();<span>//</span><span>返回二维数组,里面是关联数组</span> <span>$res</span>->row();<span>//</span><span>返回第一条数据,直接是一个对象</span>
AR操作数据库
在database.php文件中,将$active_recoed的值改为TRUE,这样就可以使用AR了。
<span>//</span><span>查询</span> <span>public</span> <span>function</span><span> index() { </span><span>$res</span> = <span>$this</span>->db->get('表名');<span>//</span><span>这里自动调用前缀</span> <span>foreach</span>(<span>$res</span>->result() <span>as</span> <span>$item</span><span>) { </span><span>echo</span> <span>$item</span>->name."<br />"<span>; } }</span>
<span>//</span><span>插入</span> <span>public</span> <span>function</span><span> index() { </span><span>$data</span>=<span>array</span><span>( </span>'name'=>'lisi', 'password'=><span>md5</span>('lisi'<span>) ); </span><span>$bool</span> = <span>$this</span>->db->insert("表名",<span>$data</span><span>); </span><span>var_dump</span>(<span>$bool</span><span>); }</span>
<span>//</span><span>更新</span> <span>public</span> <span>function</span><span> index() { </span><span>$data</span>=<span>array</span><span>( </span>'name'=>'wangwu', 'password'=><span>md5</span>('wangwu'<span>) ); </span><span>$bool</span> = <span>$this</span>->db->update('表名',<span>$data</span>,<span>array</span>('id'=>3<span>)); </span><span>var_dump</span>(<span>$bool</span><span>); }</span>
<span>//</span><span>删除</span> <span>$bool</span> = <span>$this</span>->db->delete('表名',<span>array</span>('id'=>2<span>)); </span><span>var_dump</span>(<span>$bool</span>);
常规的方法是ul嵌套,即主菜单ul-li里嵌套子菜单ul,要用到两级循环
首先循环主菜单,要有固定的条件来判断出主菜单,比如主菜单的uid==0或者其它。。。
3466233c796ad0a02fd2ff94e081b9a9
8e1ef8385f988e0a80c9ab37200328fa栏目名称f71d43ed7fecb3062faf1a901c9d11e7
72bc6d451460180351633a4389ac8f92".$news_item['title'] . 'ff6d136ddc5fdfeffaf53ff6ee95f185';
foreach ($news as $child_item): //循环二次
if($news_item['id'] == $child_item['uid']){ //判断并得到对应子菜单
echo "25edfb22a4f469ecb59f1190150159c6"."ss".$child_item['title']."f71d43ed7fecb3062faf1a901c9d11e7";
}
endforeach;
echo "767c67a14edfba93f822b154b7327a3af71d43ed7fecb3062faf1a901c9d11e7";
}
endforeach; ?>
767c67a14edfba93f822b154b7327a3a
当然这仅限于两级菜单,多级或无限极,可以使用函数递归
function menu($uid=0){ //设置缺省从主菜单开始
global $news;
foreach ($news as $news_item):
if($news_item['uid'] == $uid){
echo "25edfb22a4f469ecb59f1190150159c6".$news_item['title'] . 'ff6d136ddc5fdfeffaf53ff6ee95f185';
menu($news_item['id']); //递归调用
echo "767c67a14edfba93f822b154b7327a3af71d43ed7fecb3062faf1a901c9d11e7";
}
endforeach;
}
------ 调用方法 ------------------------------
MY_Controller のクラス名は同じである必要はありませんか?