■
View_Employee_Index
<?php class View_Employee_Index extends ViewModel { private $per_page = 3; public function view() { //画面入力値の取得 $per_page = Input::get('per_page', 1); $keyword = Input::get('keyword', null); $offset = Input::get('offset', null); $sort = Input::get('sort', 'id'); //ページネーションの設定 $count = Model_Employee::count(); $config = array( //'pagination_url' => 'employee', 'uri_segment' => 'page',//URL上のクエリパラメータの位置 'num_links' => 4, 'per_page' => $per_page, 'total_items' => $count, ); //ページネーションObj生成 $pagination = Pagination::forge('employee_pagination', $config); $this->pagination = $pagination; //クエリ実行 $query = Model_Employee::query(); if(! empty($keyword)){ $query->where('id', $keyword); } //->where('id', $keyword)//ここ、後であいまい検索許容するよう修正 $this->result = $query->order_by($sort, 'desc') ->limit($this->pagination->per_page) ->offset($this->pagination->offset) ->get(); //値取得 //$this->result = Model_Employee::query()->get(); //->limit($this->per_page) //->offset($pagination->offset) // $this->result = Model_Employee::find('all', // array( // 'related' => array( // // リレーションの設定名を指定 // 'affiliation', // 'position', // ), // ) // ); //var_dump($this->result); //役職 //部署表示用データ $affiliation_string = array(); $this->resultarray = array(); foreach($this->result as $row){ $this->resultarray[$row->id]['id'] = $row->id; $this->resultarray[$row->id]['family_name'] = $row->family_name; $this->resultarray[$row->id]['given_name'] = $row->given_name; $this->resultarray[$row->id]['phonetic_of_family_name'] = $row->phonetic_of_family_name; $this->resultarray[$row->id]['phonetic_of_given_name'] = $row->phonetic_of_given_name; $this->resultarray[$row->id]['assigned_name'] = $row->position->assigned_name; //各々の行ー>リレーション名ー>リレ先のカラム名 //var_dump($row->position); //部 //var_dump($row->affiliation->department_name); $affiliation_string[] = $row->affiliation->department_name ? $row->affiliation->department_name .'部' : null; //課 $affiliation_string[] = $row->affiliation->section_name ? $row->affiliation->section_name .'課' : null; //係 $affiliation_string[] = $row->affiliation->subsection_name ? $row->affiliation->subsection_name .'係' : null; //var_dump($affiliation_string); $this->resultarray[$row->id]['affiliation_result'] = implode( '', $affiliation_string); //初期化 $affiliation_string = array(); } } }
confirm.twig
<form method = "post" name = "form1" action = "http://localhost/fuelphp-1.7.3/public/employee/regist"> <h2>確認画面です</h2> <p>名字 :<input type="hidden" name ="family_name" value = {{family_name}}>{{family_name}}</p> <p>なまえ :<input type="hidden" name ="given_name" value = {{given_name}}>{{given_name}}</p> <p>名字カナ :<input type="hidden" name ="phonetic_of_family_name" value = {{phonetic_of_family_name}}>{{phonetic_of_family_name}}</p> <p>なまえカナ :<input type="hidden" name="phonetic_of_given_name" value = {{phonetic_of_given_name}} > {{phonetic_of_given_name}}</p> {{validation}} <tr > <input type="hidden" name ="bu" value = {{bu}}>{{bu}}部</input> <input type="hidden" name ="ka" value = {{ka}}>{{ka}}課</input> <input type="hidden" name ="kakari" value = {{kakari}}>{{kakari}}係</input> </tr> <br> <tr> <input type="hidden" name ="yakushoku" value = {{yakushoku}}> 役職:{{yakushoku}}</p> </tr> <p><input type="submit" value="登録!"></p> <a href="" onclick="document.form1.submit();return false;">登録画面へ戻る</a> </form>
regist.twig
<form method="post" action = "http://localhost/fuelphp-1.7.3/public/employee/confirm"> <h2>フォームに入力してください。</h2> <p>名字 :<input type="text" name ="family_name" value = {{family_name}}></p> <p>なまえ :<input type="text" name ="given_name" value = {{given_name}}></p> <p>名字カナ : <input type="text" name ="phonetic_of_family_name" value = {{phonetic_of_family_name}}></p> <p>なまえカナ:<input type="text" name="phonetic_of_given_name" value = {{phonetic_of_given_name}} ></p> {{val_result}} <tr > <select name="bu"> {% for key, item in bu_list %} {% if bu == item.department_name %} <option value={{item.department_name}} selected>{{item.department_name}}</option> {% else %} <option value={{item.department_name}}>{{item.department_name}}</option> {% endif %} {% endfor %} </select> 部 <select name="ka"> {% for key, item in ka_list %} {% if ka == item.section_name %} <option value={{item.section_name}} selected>{{item.section_name}}</option> {% else %} <option value={{item.section_name}} >{{item.section_name}}</option> {% endif %} {% endfor %} </select> 課 <select name="kakari"> {% for key, item in kakari_list %} {% if kakari == item.subsection_name %} <option value={{item.subsection_name}} selected>{{item.subsection_name}}</option> {% else %} <option value={{item.subsection_name}} >{{item.subsection_name}}</option> {% endif %} {% endfor %} </select> 係 </tr> <br> <tr> <select name="yakushoku"> {% for key, item in yakushoku_list %} {% if yakushoku == item.assigned_name %} <option value={{item.assigned_name}} selected>{{item.assigned_name}}</option> {% else %} <option value={{item.assigned_name}}>{{item.assigned_name}}</option> {% endif %} {% endfor %} </select> </tr> 役職 <p><input type="submit" value="確認画面へ"></p> </form>
index.twig
<head> <title>社員システム</title> <!-- JS --> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> <script src="http://localhost/fuelphp-1.7.3/public/assets/js/detail.js"></script> <script src="http://localhost/fuelphp-1.7.3/public/assets/js/list.js"></script> </head> {% block content %} <form action="#" method="get" name="form" > <input type="search" name="search" placeholder="キーワードを入力"> <div><input type="button" value="前のページへ戻る" onclick="sendParams();"></div> <table border="1" width="600" cellspacing="0" cellpadding="5" bordercolor="#333333"> <tr> <span class= "error"></span> <th bgcolor="#8EF1FF">ID</th> <th bgcolor="#8EF1FF">名字</th> <th bgcolor="#8EF1FF">名前</th> <th bgcolor="#8EF1FF">名字カナ</th> <th bgcolor="#8EF1FF">名前カナ</th> <th bgcolor="#8EF1FF">役職</th> <th bgcolor="#8EF1FF">部署</th> </tr> {% for item in resultarray %} <tr id = {{ item.id }} > <td class = "iddiv">{{ item.id }}</td> <td>{{ item.family_name}}</td> <td>{{ item.given_name }}</td> <td>{{ item.phonetic_of_family_name }}</td> <td>{{ item.phonetic_of_given_name }}</td> <td>{{ item.assigned_name }}</td> <td>{{ item.affiliation_result}}</td> </tr> <tr ><td align="center" colspan = "7"><div "style= display:" >aaa</div></td></tr> {% endfor %} </table> <select name="per_page"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> </form> {{ pagination|raw }} {{ random() }} {% endblock %}
View_Employee_Index
<?php class View_Employee_Index extends ViewModel { private $per_page = 3; public function view() { //ページネーションの設定 $count = Model_Employee::count(); $config = array( 'pagination_url' => 'employee', 'uri_segment' => 2, 'num_lijnks' => 4, 'per_page' => $this->per_page, 'total_items' => $count, ); //ページネーションObj生成 $pagination = Pagination::forge('employee_pagination', $config); //値取得 $this->result = Model_Employee::query() ->order_by('id', 'desc') ->limit($this->per_page) ->offset($pagination->offset) ->get(); foreach($this->result as $row){ $this->id = $row['id']; } $this->a = 'aaaaaaa'; } }
View_Employee_Confirm
<?php class View_Employee_Confirm extends ViewModel { public function view() { $result = Input::post(); $this->family_name = Input::post('family_name', null); $this->given_name = Input::post('given_name', null); $this->phonetic_of_family_name = Input::post('phonetic_of_family_name', null); $this->phonetic_of_given_name = Input::post('phonetic_of_given_name', null); $this->bu = Input::post('bu', null); $this->ka = Input::post('ka', null); $this->kakari = Input::post('kakari', null); $this->yakushoku = Input::post('yakushoku', null); } }
Controller_Detail
<?php class Controller_Detail extends Controller_Rest { public function post_detail() { $value = \Input::post('employee_id'); $result = Model_Employee::find($value, array('select' => array('picture_url', 'comments'))); return $this->response($result); } }
View_Employee_Done
<?php class View_Employee_Done extends ViewModel { public function view() { $result = Input::post(); $this->family_name = Input::post('family_name', null); $this->given_name = Input::post('given_name', null); $this->phonetic_of_family_name = Input::post('phonetic_of_family_name', null); $this->phonetic_of_given_name = Input::post('phonetic_of_given_name', null); $this->bu = Input::post('bu', null); $this->ka = Input::post('ka', null); $this->kakari = Input::post('kakari', null); $this->yakushoku = Input::post('yakushoku', null); } }
おつかれー
■
lang/ja
<?php return array( 'required' => ':labelは必須です', 'max_length' => ':labelは:param:文字以内で入力してください', 'correct_yakushoku' => ':labelが所属と合致しません', 'only_one_yakushoku' => '部署の役職人数制限に反します', );
classes/validation.php
<?php /** * 拡張Validation * 一括設定 * @package Fuel * @subpackage Core * @category Core */ class Validation extends \Fuel\Core\Validation { // 検証条件をまとめて指定 public function add_fieldset($params = array(), $input = array()) { var_dump('aaaaaa'); // 入力データが空ならPOSTを設定 if ( count($input) <= 0 ) { $input = $_POST; } var_dump($params); // 検証条件セット if( is_array($params) ) { foreach($params as $conf) { if ( strlen($conf['rules']) > 0 ) { $this->add_field($conf['name'], $conf['label'], $conf['rules']); } } return true; } return false; } // エラーをまとめて取得 public function get_messages() { $msg = array(); foreach($this->error() as $field => $error) { $msg[$field] = $this->error($field)->get_message(); } return $msg; } }
config/validation.php
<?php return array( 'employee' => array( 'family_name' => array( 'name' => 'name', 'label' => '名字', 'rules' => 'required|max_length[15]', ), 'given_name' => array( 'name' => 'given_name', 'label' => '名前', 'rules' => 'required|max_length[15]', ), 'phonetic_of_family_name' => array( 'name' => 'phonetic_of_family_name', 'label' => '名字(カナ)', 'rules' => 'required|max_length[15]', ), 'phonetic_of_given_name' => array( 'name' => 'phonetic_of_given_name', 'label' => '名前(カナ)', 'rules' => 'required|max_length[15]', ), 'bu' => array( 'name' => 'bu', 'label' => '部', 'rules' => 'required', ), 'yakushoku' => array( 'name' => 'yakushoku', 'label' => '役職', 'rules' => 'required|correct_yakushoku|only_one_yakushoku', ), ), );
Model_Employee
<?php class Model_Employee extends \Orm\Model { protected static $_properties = array( 'id', 'family_name', 'given_name', 'phonetic_of_family_name', 'phonetic_of_given_name', 'affiliation_id', 'position_id', 'picture_url', 'comments', 'has_been_deleted', 'number_of_editing', ); protected static $_table_name = 'employee'; protected static $_belongs_to = array( 'affiliation' => array( 'key_from' => 'affiliation_id', 'model_to' => 'Model_Affiliation', 'key_to' => 'id', ), 'position' => array( 'key_from' => 'position_id', 'model_to' => 'Model_Position', 'key_to' => 'id', ) ); /** * 人数制限バリデーション用 */ public function get_count_column($affi, $yakushoku){ $query = self::forge(); $query->where('affiliation_id', $affi) ->where('position_id', '>', $yakushoku) ->count(); return $query; } }
Cont/Emplo
<?php class Controller_Employee extends Controller_Template { private $per_page = 3; public function action_index() { //ビューに渡す配列の初期化 $data = array(); //タイトル $this->template->title = '社員情報一覧'; //ビューの読み込み $this->template->content = ViewModel::forge('employee/index.twig'); } public function get_regist() { self::post_validation(); //タイトル $this->template->title = '社員情報一覧'; //ビューの読み込み $this->template->content = ViewModel::forge('employee/regist.twig'); } //確認画面から戻ってくる用 public function post_regist() { self::post_validation(); //タイトル $this->template->title = '社員情報一覧'; //ビューの読み込み $this->template->content = ViewModel::forge('employee/regist.twig'); } public function post_confirm() { $validation = self::post_validation(); var_dump($validation); //タイトル $this->template->title = '社員情報一覧'; //ビューの読み込み $view = ViewModel::forge('employee/confirm.twig'); $view -> set('validation', $validation); $this->template->content = ViewModel::forge('employee/confirm.twig'); } public static function post_validation() { // プロファイリング停止 Fuel::$profiling = false; // json初期値 $json = array( 'res' => 'NG', 'error' => array(), ); // バリデーション設定 Config::load('validation', true); $val_config = Config::get('validation.employee'); $val = Validation::forge(); $val->add_callable('Extension'); $val->add_fieldset($val_config); var_dump($val->run()); // バリデーションチェック if ( $val->run() ) { $json['res'] = 'OK'; $json['error'] = null; } else { $json['error'] = $val->get_messages(); } return $json['error']; } }
View_Employee_Regist
<?php class View_Employee_Regist extends ViewModel { public function view() { //確認画面からの入力値引継ぎ $result = Input::post(); //プルダウン表示用 $this->family_name = Input::post('family_name', null); $this->given_name = Input::post('given_name', null); $this->phonetic_of_family_name = Input::post('phonetic_of_family_name', null); $this->phonetic_of_given_name = Input::post('phonetic_of_given_name', null); $this->bu = Input::post('bu', null); $this->ka = Input::post('ka', null); $this->kakari = Input::post('kakari', null); $this->yakushoku = Input::post('yakushoku', null); //プルダウン表示用 $bu_obj = DB::select ( 'department_name' )->from ( 'affiliation' )->distinct(true)->execute(); $ka_obj = DB::select ( 'section_name' )->from ( 'affiliation' )->distinct(true)->execute(); $kakari_obj = DB::select ( 'subsection_name' )->from ( 'affiliation' )->distinct(true)->execute(); $yakushoku_obj = DB::select ( 'assigned_name' )->from ( 'position' )->distinct(true)->execute(); foreach ($bu_obj as $key => $value) { $bu_list[] =$value; } foreach ($ka_obj as $key => $value) { $ka_list[] =$value; } foreach ($kakari_obj as $key => $value) { $kakari_list[] =$value; } foreach ($yakushoku_obj as $key => $value) { $yakushoku_list[] =$value; } $this->bu_list = $bu_list; $this->ka_list = $ka_list; $this->kakari_list = $kakari_list; $this->yakushoku_list= $yakushoku_list; } }
■
★これで、なんで戻るボタンはアンカータグなのか
なぜjsは return false;なのか分かった!!
https://blog.goo.ne.jp/xmldtp/e/0884dbe92721ab84cb27d212ca631094
classees/validation.php
<?php class Extension { const BUCHOU = 4; const KACHOU = 3; const KK = 2; const HIRA = 1; static $ja_to_num = array( 'buchou' => self::BUCHOU, 'kachou' => self::KACHOU, 'KK' => self::KK, 'hira' => self::HIRA, ); static $each_to_affi = array( //1課 '2' => array('3','4','5'), //2課 '6' => array('7','8','9'), //3課 '10' => array('11','12','13'), ); /* * 役職と所属が対応しているか */ public static function _validation_correct_yakushoku() { $bu = Input::post('bu', null); $ka = Input::post('ka', null); $kakari = Input::post('kakari', null); $yakushoku = Input::post('yakushoku', null); //役職名(日本語)を役職(id)②変換 if (array_key_exists($yakushoku, self::$ja_to_num)){ $yakushoku_num = self::$ja_to_num[$yakushoku]; } //部所属の場合、部長のみOK if(empty($ka)){ $result = ($yakushoku_num == self::BUCHOU) ? true: false; return $result; } //課所属の場合、課長のみOK else if(empty($kakari)){ $result = ($yakushoku_num == self::KACHOU) ? true: false; return $result; } else{ //係所属の場合、係長と一般OK if ($yakushoku_num == self::KK or $yakushoku_num == self::HIRA){ return true; } else{ return false; } } } /* * 部長は部に1人だけ */ public static function _validation_only_one_yakushoku() { $bu = Input::post('bu', null); $ka = Input::post('ka', null); $kakari = Input::post('kakari', null); $yakushoku = Input::post('yakushoku', null); //役職名(日本語)を役職(id)に変換 if (array_key_exists($yakushoku, self::$ja_to_num)){ $yakushoku_num = self::$ja_to_num[$yakushoku]; } var_dump($yakushoku_num); //$affiliation = self::$each_to_affi[$bu]; //各々の所属から所属番号(通しid)への変換 $affiliation= $ka ? self::$each_to_affi[$bu][$ka] : self::$each_to_affi[$bu]; $affiliation = $kakari ? self::$each_to_affi[$bu][$ka][$kakari] : self::$each_to_affi[$bu][$ka]; var_dump($affiliation); // $already_exists_row = get_count_column($affiliation, $yakushoku_num); // if(!empty ($already_exists_row)){ // return false; // }else { // return true; // } } }
0419-2
list.js
$(document).ready(function() {$(document).ready(function() { console.log('afsdfas'); function sendParams(){ var per_page = $('option:selected').val() != null ? $('option:selected').val() : null; var keyword = $('option:selected').val() != null ? $('option:selected').val() : null; var offset = $('option:selected').val() != null ? $('option:selected').val() : null; var sort = $('option:selected').val() != null ? $('option:selected').val() : null; var params = "per_page=" + per_page + "&keyword=" + keyword + "&offset=" + offset + "&sort=" + sort; // window.location.href = 'http://localhost/fuelphp-1.7.3/public/employee/index?' + params; console.log(params); }});
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
ViewModel index.php
<?php<?phpclass View_Employee_Index extends ViewModel { private $per_page = 3; public function view() { //画面入力値の取得 $per_page = Input::get('per_page', 1); $keyword = Input::get('keyword', null); $offset = Input::get('offset', null); $sort = Input::get('sort', 'id');
//ページネーションの設定 $count = Model_Employee::count(); $config = array( //'pagination_url' => 'employee', 'uri_segment' => 'page',//URL上のクエリパラメータの位置 'num_links' => 4, 'per_page' => $per_page, 'total_items' => $count, );
//ページネーションObj生成 $pagination = Pagination::forge('employee_pagination', $config); $this->pagination = $pagination;
//クエリ実行 $query = Model_Employee::query(); if(! empty($keyword)){ $query->where('id', $keyword); } //->where('id', $keyword)//ここ、後であいまい検索許容するよう修正 $this->result = $query->order_by($sort, 'desc') ->limit($this->pagination->per_page) ->offset($this->pagination->offset) ->get();
//値取得 //$this->result = Model_Employee::query()->get(); //->limit($this->per_page) //->offset($pagination->offset) // $this->result = Model_Employee::find('all', // array( // 'related' => array( // // リレーションの設定名を指定 // 'affiliation', // 'position', // ), // ) // ); //var_dump($this->result); //役職 //部署表示用データ $affiliation_string = array(); $this->resultarray = array(); foreach($this->result as $row){ $this->resultarray[$row->id]['id'] = $row->id; $this->resultarray[$row->id]['family_name'] = $row->family_name; $this->resultarray[$row->id]['given_name'] = $row->given_name; $this->resultarray[$row->id]['phonetic_of_family_name'] = $row->phonetic_of_family_name; $this->resultarray[$row->id]['phonetic_of_given_name'] = $row->phonetic_of_given_name; $this->resultarray[$row->id]['assigned_name'] = $row->position->assigned_name; //各々の行ー>リレーション名ー>リレ先のカラム名 //var_dump($row->position); //部 //var_dump($row->affiliation->department_name); $affiliation_string = $row->affiliation->department_name ? $row->affiliation->department_name .'部' : null; //課 $affiliation_string = $row->affiliation->section_name ? $row->affiliation->section_name .'課' : null; //係 $affiliation_string[] = $row->affiliation->subsection_name ? $row->affiliation->subsection_name .'係' : null; //var_dump($affiliation_string); $this->resultarray[$row->id]['affiliation_result'] = implode( '', $affiliation_string);
//初期化 $affiliation_string = array(); } }}
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
index.twig
<head> <head> <title>It's unkoタイム</title> <!-- JS --> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> <script src="http://localhost/fuelphp-1.7.3/public/assets/js/detail.js"></script> <script src="http://localhost/fuelphp-1.7.3/public/assets/js/list.js"></script> </head> {% block content %}<form action="#" method="get" name="form" ><input type="search" name="search" placeholder="キーワードを入力"><div><input type="button" value="前のページへ戻る" onclick="sendParams();"></div><table border="1" width="600" cellspacing="0" cellpadding="5" bordercolor="#333333"><tr> <span class= "error"></span> <th bgcolor="#8EF1FF">ID</th> <th bgcolor="#8EF1FF">名字</th> <th bgcolor="#8EF1FF">名前</th> <th bgcolor="#8EF1FF">名字カナ</th> <th bgcolor="#8EF1FF">名前カナ</th> <th bgcolor="#8EF1FF">役職</th> <th bgcolor="#8EF1FF">部署</th>
</tr>
{% for item in resultarray %}<tr id = {{ item.id }} > <td class = "iddiv">{{ item.id }}</td> <td>{{ item.family_name}}</td> <td>{{ item.given_name }}</td> <td>{{ item.phonetic_of_family_name }}</td> <td>{{ item.phonetic_of_given_name }}</td> <td>{{ item.assigned_name }}</td> <td>{{ item.affiliation_result}}</td></tr> <tr ><td align="center" colspan = "7"><div "style= display:" >aaa</div></td></tr>{% endfor %}
</table><select name="per_page"><option value="1">1</option><option value="2">2</option><option value="3">3</option></select>
</form>{{ pagination|raw }} {{ random() }}{% endblock %}
0419
http://piyopiyocs.blog115.fc2.com/blog-entry-596.html
http://fuelphp.jp/docs/1.7/packages/orm/crud.html
http://fuelphp.jp/docs/1.7/classes/pagination.html
http://fuelphp.jp/docs/1.7/classes/database/usage.html
[ ] js changeイベントが走らない
→DOM読み込みしてないから https://blog.falconsrv.net/articles/512
★DOMとは、$(document)readyとはhttps://qiita.com/8845musign/items/88a8c693c84ba63cea1d
たぶんこれが一覧の検索条件系の答えw
http://phpjavascriptroom.com/?t=js&p=location4
jqueryでセルフ定義関数を呼び出すときの括弧
特に機能を持たない汎用ボタン(formの指定urlではなくて、jsで遷移)の作り方
http://www.htmq.com/html5/input_type_button.shtml
onclickでjquery側のセルフ定義関数を呼んでもnot defined https://altarf.net/computer/javascript-jquery-computer/1534
→ ★即時関数
http://web-wizardry.net/jquery/jquery%E3%81%AE%E8%AA%AD%E8%BE%BC%E3%81%BFready%E3%81%A8load%E3%81%AE%E9%A0%86%E7%95%AA%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/
headに書くのが最速? n
■
<head> <head> <title>It's unkoタイム</title> <!-- JS --> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> <script src="http://localhost/fuelphp-1.7.3/public/assets/js/detail.js"></script> </head> {% block content %}<table border="1" width="600" cellspacing="0" cellpadding="5" bordercolor="#333333"><tr> <span class= "error"></span> <th bgcolor="#8EF1FF">ID</th> <th bgcolor="#8EF1FF">名字</th> <th bgcolor="#8EF1FF">名前</th> <th bgcolor="#8EF1FF">名字カナ</th> <th bgcolor="#8EF1FF">名前カナ</th> <th bgcolor="#8EF1FF">役職</th> <th bgcolor="#8EF1FF">部署</th>
</tr>
{% for item in resultarray %}<tr id = {{ item.id }} > <td class = "iddiv">{{ item.id }}</td> <td>{{ item.family_name}}</td> <td>{{ item.given_name }}</td> <td>{{ item.phonetic_of_family_name }}</td> <td>{{ item.phonetic_of_given_name }}</td> <td>{{ item.assigned_name }}</td> <td>{{ item.affiliation_result}}</td></tr> <tr ><td align="center" colspan = "7"><div "style= display:" >aaa</div></td></tr>{% endfor %}
</table>{{ random() }}{% endblock %}
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<detail.js>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
$(function (){ $(function (){ $(".iddiv").click(function(){ var thisrow = $(this).parent(); var thisrowid = $(thisrow).attr("id"); console.log(thisrowid); $(function(){ $.ajax({ url:'http://localhost/fuelphp-1.7.3/public/index.php/detail/detail.json', type:'POST', dataType:"JSON", data: { "employee_id": thisrowid }, success:function(data){ var jsondata = JSON.parse(data) console.log(jsondata); console.log(jsondata['id']); }, error:function(data){ //DOM操作がわかんないや console.log('エラーっすわ'); }
}) }); }); });
<<<<<<<<>>>>>れすとこん>>>>>>>>>>>>>>>>>
<?php<?phpclass Controller_Detail extends Controller_Rest{ public function post_detail() { $value = \Input::post('employee_id'); $result = Model_Employee::find($value, array('select' => array('picture_url', 'comments'))); return $this->response($result); }}
0417 一覧表示とjsで詳細表示
- 部署情報(affilation)を正しく結合して、ひとつのテーブル要素として表示
★implode 配列要素を文字列として結合
★存在するなら~ 3項演算子
- 選択したカラムのみを取得
http://fuelphp.jp/docs/1.6/packages/orm/crud.html#partial_selects
-RESTConからajaxで取得したデータを変換
★JSONにはObj型と配列型がある
phpやjsで用いるには、各々の変数としてデコードする必要がある
jsではJSON.parse(JSON変数);
http://www.task-notes.com/entry/20160719/1468858991
https://teratail.com/questions/19313
----------------------------------------------------------------------------------------------------------------------
Fuel\Core\Database_Exception [ 1054 ]:
SQLSTATE[42S22]: Column not found: 1054
Unknown column 't2.sorting ' in 'field list' with query:
"SELECT `t0`.`id` AS `t0_c0`,
`t0`.`family_name` AS `t0_c1`,
`t0`.`given_name` AS `t0_c2`,
`t0`.`phonetic_of_family_name` AS `t0_c3`,
`t0`.`phonetic_of_given_name` AS `t0_c4`,
`t0`.`affiliation_id` AS `t0_c5`,
`t0`.`position_id` AS `t0_c6`,
`t0`.`picture_url` AS `t0_c7`,
`t0`.`comments` AS `t0_c8`,
`t0`.`has_been_deleted` AS `t0_c9`,
`t0`.`number_of_editing` AS `t0_c10`,
`t1`.`department_name` AS `t1_c0`,
`t1`.`section_name` AS `t1_c1`,
`t1`.`subsection_name` AS `t1_c2`,
`t1`.`sorting` AS `t1_c3`,
`t1`.`id` AS `t1_c4`,
`t2`.`assigned_name` AS `t2_c0`,
`t2`.`sorting ` AS `t2_c1`,
`t2`.`id` AS `t2_c2`
FROM `employee` AS `t0`
LEFT JOIN `affiliation` AS `t1` ON (`t0`.`affiliation_id` = `t1`.`id`)
LEFT JOIN `position` AS `t2` ON (`t0`.`position_id` = `t2`.`id`)"
//ORMの本質はLEFTJOINじゃん