ホームページ >バックエンド開発 >PHPチュートリアル >ci フレームワーク (2)、ci フレームワーク_PHP チュートリアル
カスタム SQL ステートメント
提供された API が SQL ステートメントの要件を満たさない場合、通常、CI はニーズを満たすことができる比較的強力な汎用 SQL API も提供します。リーリー
カスタム拡張コントローラー application/core に新しい MY_Controller.php を作成します リーリー 同時に、application/config/config.phpで設定する必要があります:
リーリーカスタム拡張モデル
application/modelsにuser_model.phpを作成しますリーリー コントローラーでカスタムモデルを呼び出す アプリケーション/コントローラー: リーリー リーリー リーリー
モデルをロードするときに、モデルに名前を付けることができます:リーリー
URL 関連機能フォームの検証中に、データをコントローラーに渡す必要があります。 アクションを正確かつスケーラブルに記述する方法:
リーリーuser/add.php ビュー:
リーリーindex.php ディレクトリの場合は、次を使用します: リーリー このAPI。 同時に、毎回 URL をロードするのは非常に面倒です。自動的にロードするように設定し、config/config.php で変更することもできます。 リーリー
おそらくこの自動読み込みは、以降のバージョンでは利用できなくなるでしょう。ルーティング
$route
['rouxx/showxx/([d]+).html'] = 'rou/show/$1';//
この文を挿入
ページネーション 知っておくべきいくつかのパラメータ
レコードは合計何件ありますか 1 ページにいくつのレコードを含める必要がありますか 合計何ページ 現在のページの前後に表示されるページネーションリンクの数
<span>//</span><span>总条数</span> <span>$config</span>['total_rows'<span>] </span><span>//</span><span>一页显示几条</span> <span>$config</span>['per_page'<span>] </span><span>//</span><span>定义当前页的前后各有几个数字链接</span> <span>$config</span>['num_links'<span>] </span><span>//</span><span>定义没有分页参数,主URL</span> <span>$config</span>['base_url']
<span>$this</span>->load->library('pagination');
<span>$this</span>->pagination->initialize(<span>$config</span>);
<span>echo</span> <span>$this</span>->pagination->create_links();
<span>echo</span> <span>$this</span>->db->limit(<span>$num</span>,<span>$start</span>); <span>//</span><span>从$start查$num条</span>
<?<span>php </span><span>if</span> ( ! <span>defined</span>('BASEPATH')) <span>exit</span>('No direct script access allowed'<span>); </span><span>class</span> Page <span>extends</span><span> CI_Controller { </span><span>public</span> <span>function</span><span> user_add(){ </span><span>$this</span>->load->model('test_m'<span>); </span><span>for</span> (<span>$i</span> = 1;<span>$i</span> <= 100;<span>$i</span>++<span>){ </span><span>$name</span> = 'u'.<span>$i</span><span>; </span><span>$arr</span> = <span>array</span>("usid"=><span>$i</span>,"uname"=><span>$name</span>,"upass"=>123456<span>); </span><span>$this</span>->test_m->user_insert(<span>$arr</span><span>); } } </span><span>public</span> <span>function</span><span> pagelist(){ </span><span>$this</span>->load->model('test_m'<span>); </span><span>$user</span> = <span>$this</span>->test_m-><span>user_select_all(); </span><span>$allnum</span> = <span>count</span>(<span>$user</span><span>); </span><span>$pagenum</span> = 20<span>; </span><span>$config</span>['total_rows'] = <span>$allnum</span><span>; </span><span>$config</span>['per_page'] = <span>$pagenum</span><span>; </span><span>$config</span>['num_links'] = 3<span>; </span><span>$config</span>['base_url'] = "/CI/index.php/page/pagelist"<span>; </span><span>$config</span>['use_page_numbers'] = <span>true</span><span>; </span><span>$this</span>->load->library('pagination'<span>); </span><span>$this</span>->pagination->initialize(<span>$config</span><span>); </span><span>var_dump</span>(<span>$this</span>->pagination-><span>create_links()); </span><span>echo</span> <span>$this</span>->pagination-><span>create_links(); </span><span>echo</span> "<br />"<span>; </span><span>$id</span> = <span>$this</span>->uri->segment(3); <span>//</span><span>获得url第三段字符</span> <span>$id</span> =<span>$id</span> ? <span>$id</span>:1<span>; </span><span>$start</span> = (<span>$id</span> - 1) * <span>$pagenum</span><span>; </span><span>$list</span> = <span>$this</span>->test_m->user_select_limit(<span>$start</span>,<span>$pagenum</span><span>); </span><span>var_dump</span>(<span>$list</span><span>); } }</span>
上传文件
视图 /views/up.php:
<span><</span><span>html</span><span>></span> <span><</span><span>form </span><span>action</span><span>="ci/CodeIgniter_2.2.0/index.php/upload/up"</span><span> method</span><span>="post"</span><span> enctype</span><span>="multipart/form-data"</span><span>></span> <span><</span><span>input </span><span>type</span><span>="file"</span><span> name</span><span>="upfile"</span> <span>/></span> <span><</span><span>input </span><span>type</span><span>="submit"</span><span> name</span><span>="sub"</span><span> value</span><span>="提交"</span> <span>/></span> <span></</span><span>form</span><span>></span> <span></</span><span>html</span><span>></span>
控制器:
<span>$config</span>['upload_path'] = './uploads/'<span>; </span><span>//</span><span>设置允许上传的类型</span> <span>$config</span>['allowed_types'] = 'gif|jpg|png'<span>; </span><span>$config</span>['max_size'] = '100'<span>; </span><span>//</span><span>如果是图片还可以设置最大高度和宽度</span> <span>$config</span>['max_height'] = 768<span>; </span><span>$config</span>['max_width'] = 1024;
还可以设置其他的一些额外参数,详细看用户手册。
<span>//</span><span>upload为调用的类名,全小写</span> <span>$this</span>->load->library('upload',<span>$config</span><span>); </span><span>//</span><span>如果上传框的name写的是userfile,那就不用传参数了,如果不是,把name的值传进去</span> <span>$this</span>->upload->do_upload('上传框的name');
<span>//</span><span>出错信息</span> <span>$error</span> = <span>array</span>('error' => <span>$this</span>->upload-><span>display_error()); </span><span>//</span><span>成功信息</span> <span>$data</span> = <span>array</span>('upload_data' => <span>$this</span>->upload->data());
<?<span>php </span><span>if</span> ( ! <span>defined</span>('BASEPATH')) <span>exit</span>('No direct script access allowed'<span>); </span><span>class</span> Upload <span>extends</span><span> CI_Controller { </span><span>//</span><span>显示带表单的视图</span> <span>public</span> <span>function</span><span> index(){ </span><span>$this</span>->load->view('up'<span>); } </span><span>//</span><span>显示上传信息</span> <span>public</span> <span>function</span><span> up(){ </span><span>$config</span>['upload_path'] = './uploads/'<span>; </span><span>$config</span>['allowed_types'] = 'gif|jpg|png'<span>; </span><span>$config</span>['max_size'] = "2000"<span>; </span><span>$this</span>->load->library('upload',<span>$config</span><span>); </span><span>//</span><span>打印成功或错误的信息</span> <span>if</span>(<span>$this</span>->upload->do_upload('upfile'<span>)) { </span><span>$data</span> = <span>array</span>("upload_data" => <span>$this</span>->upload-><span>data()); </span><span>var_dump</span>(<span>$data</span><span>); } </span><span>else</span><span> { </span><span>$error</span> = <span>array</span>("error" => <span>$this</span>->upload-><span>display_errors()); </span><span>var_dump</span>(<span>$error</span><span>); } } }</span>
Session
利用CI类实现session登录
<span>//</span><span>生成一个随机不重复的字符串走位加密的key保存到config.php的encryption_key中</span> <span>$config</span>['encryption_key']='adb8bf6d0ac4e17b42a80941582497a4';
<span>$this</span>->load->library('session');
<span>$array</span> = <span>array</span>('id'=>3,'name'=>'jack'<span>); </span><span>$this</span>->session->set_userdata(<span>$array</span>);
<span>$this</span>->session->userdata(session名);
<span>$this</span>->session->unset_userdata('SESSION名');
$config['sess_cookie_name'] = 'ci_session'; $config['sess_expiration'] = 7200; $config['sess_expire_on_close'] = FALSE; $config['sess_encrypt_cookie'] = TRUE $config['sess_use_database'] = FALSE; $config['sess_table_name'] = 'ci_sessions'; $config['sess_match_ip'] = FALSE; $config['sess_match_useragent'] = TRUE; $config['sess_time_to_update'] = 300;
<span>//</span><span>设置</span> <span>$this</span>->session->set_flashdata('test','aaaaa'<span>); </span><span>//</span><span>读取</span> <span>$test</span> = <span>$this</span>->session->flashdata('test');
控制层
function test_func(){
//获取model页面需要的两个参数
$competition_id = $_GET["competition_id"];
$report_class = $_GET["report_class"];
$this->load->model("Action"); //引入model
$data["head"] = $this->Action->get_report_item($competition_id, $report_class); //引用model的函数
$this->load->view("test_result",$data); //将结果显示在test_result.php页面中
}
view层:
8a44a4ccd3189cbcdc4134660d5fb4c4
c2eb0c8ca3e285258ac17d45edf6295c添加结果显示d8b036b3d650da4c1e8fc3d87d693360
8291983c0d67696f62a5d3d9bba8793f //此处选择了循环输出从控制层传输的结果
d277d620373d69aff05ac57a1835c373
e1fa2e7e437f3fbef7c5214beac6fc32
b6c5a531a458a2e790c1fd6421739d1c字段名称(含义)bf2ac571d69f1511b31d11e827d927fe //该td中显示的是你从数据库、即model层中获取到的数据的含义,想显示多少,显示哪个,在这里确认
2d906c57f55b1ec83a7abf24e669c042
e5bcf76e6571bce4213ba481f191b522
e1fa2e7e437f3fbef7c5214beac6fc32
b6c5a531a458a2e790c1fd6421739d1c52f3ce80a4b39d067087dcd3dc930ff0test; ?>bf2ac571d69f1511b31d11e827d927fe
2d906c57f55b1ec83a7abf24e669c042
e1fc7f6cef38cd1cd5ad96cc223891d8
91f722ca9dfa10b57d2e4f9620a87b55
643cf39597f76fe8774961b137e6a6c7
$title をビュー ファイル内で直接使用できます
CI は、$data の各項目に基づいて変数を宣言でき、ビュー内で直接呼び出すことができます
これが CI アーキテクチャの仕組みです。具体的にはどのように宣言すればよいでしょうか。詳しく調べてませんでした