フレームワーク: CI
状況:
codeigniter でこの非常にイライラする問題があります。
ここにコードがあります:(コントローラー)
class sampleController extends CI_Controller {
function index() {
data['message'] = 'something';
data['js'] = array('script1.js', 'script2.js');
data['css'] = array('style1.css', 'style2.css', 'style3.css');
$this->load->model('user_model');
$user = $this->input->post('username');
data['user_id'] = $this->user_model->getUserIdByUsername($user);
data['user_info'] = $this->user_model->getAllUserInfo($user);
$this->load->view('someview', $data);
}
}
さて、私のコントローラに行く、私はいくつかのデータをjs
渡しましcss
たuser_id
user_info
ここに私のモデルのメソッドがあります:
getUserIdByUsername($user) {
$this->db->select("id");
$this->db->where("username", $user);
$result = $this->get("users");
return $result->row();
}
getAllUserInfo($user) {
$this->db->select("first_name, last_name, age");
$this->db->where("username", $user);
$result = $this->get("users");
return $result->row();
}
コントローラーから渡されたすべての変数にアクセスしようとすると、ビューで問題が発生します
- エコー
$message
を試みた場合、次のように正しくレンダリングされます =something
foreach
$js
を使用してそれぞれをループしようとすると$css
、このようになりますforeach($js as $key){//echo script here}
foreach($css as $key){// echo link rel stylesheet here}
それはすべて同じように<script src='script1.js'></script><script ...></script>
反復するように正しくレンダリングされます$js
css
しかし、 $user_id をエコーアウトしようとした場合。. そうはなりません。それはオブジェクトです。
問題を解決するために私がしたことは. . <?php foreach($user_id as $id){} ?>
この場合 $id をエコーできますとにかくそこにあるので、面倒な foreach なしでシンプルにエコーできます。
に来たときにこれを行っても問題ないことを理解し$user_info
ましforeach($user_info as $key => $value){$info[$key]=$value}
たが、ビューでそれを行うより良い方法はありますか?
オブジェクトの代わりに、ビューが使用できるようになる前に配列が送信されるのでしょうか?
どうもありがとう
編集:同じメソッド名を修正。