-2

ビューファイルupdate.phpがあり、次のコードが含まれています。

php foreach ($record as $my_records)

$val1=$my_records['name'];

$val2=$my_records['faculty'];

$val3=$my_records['level'];

$val4=$my_records['year'];

?>

php endforeach 

そして、私は関数を備えたコントローラーを持っておりupdate、このコントローラーは次のようなモデルからレコードを取得します。

$data['record']=$this->myproject_model->get_all_values($rollno); 

次に、これらのレコードを次のようにビューに渡します

$this->load->view('iproject/update',$data);

ただし、コントローラーからのビューに自分の値を送信する必要があります。つまり、モデルから取得したデータをクリアし、場合によっては自分の値をビューに送信する必要があります。では、上記のコード$data['record']に示されているのと同じ方法で、自分のデータを配列に入れてビューにフェッチする方法はありますか?update.php

4

4 に答える 4

0

$data['record']モデルからコントローラーをフェッチした後は、コントローラーでいつでも変更できます。

しかし、MVC の方法は、モデル自体から正しいデータを送信することです。

于 2012-12-07T06:11:58.820 に答える
0

次のように静的データを送信できます。

$data = array(
     'x' =>'hello',
     'y' =>'how are',
    );

この$data配列を$data以前に送信した方法と同じようにビューに送信すると、アクセスできます。

于 2012-12-07T06:13:13.957 に答える
0
$records = $this->myproject_model->get_all_values($rollno);

$reults = $this->prepare_records($records); // Below.

$data['results'] = $results;
$this->load->view('iproject/update', $data);

そして、ロジックで記述する必要がある関数 (最も簡単ではありますが、最適ではありませんが、関数を配置する場所はコントローラーです)。

private function prepare_records($records)
{
  $results = array();
  // Fill up $results
  return $results;
}

さらに良い戦略は、関数を myproject_model に配置して、コントローラーをクリーンに保ち、モデル内のデータを囲むロジックを維持することです。

次のように置き換えます。

$reults = $this->prepare_records($records);

$reults = $this->myproject_model->prepare_records($records);

そして、関数をモデルに移動します。宣言がモデル内にある場合は、宣言を public に変更する必要があります (これは、必要なコントローラーから呼び出すことができるため、クールです)。

public function prepare_records($records) { }
于 2012-12-07T06:13:31.100 に答える
0

この場合、foreach ループでポインターを使用します。次に、エントリを変更する必要があるかどうかを確認してから、変更を加えることができます。

次の例では、ユーザーが 4 年生または最終学年であるかどうかを確認します。そうであれば、学部名の前に 'Final Year Student - ' を追加します。新しい配列を作成してそこに入力する代わりに、これはコードが表示用の結果を適切に準備するよりインテリジェントな方法です。

foreach($records as &$record){
    if($record['year'] == '4'){
        $record['faculty'] = 'Final Year Student - ' . $record['faculty'];
    }
}

ループが完了すると、$records には変更されたエントリが含まれます。

于 2013-03-08T15:22:46.117 に答える