我查看了周围的主题,但我没有看到我的情况
所以,我有控制器填充了方法,以及一个加载我在这个特定控制器中常用的模型的构造。
一切正常。
我需要在构造函数中设置一个数组,如
$data["content"]["something"] = "bla bla";
多数民众赞成。所以我将$ data [" content"]传递给了视图加载器,我希望能够访问
$something
,但没有。它将它作为未定义的变量,但为什么呢?当我把它放在特定的方法中时,一切正常,但是当它在构造函数中时它表示未定义。 有任何想法吗? 谢谢! :)
答案 0 :(得分:0)
您无法在View中访问构造函数变量。您需要将它传递给控制器的方法并将其传递给视图。例如,
在构造函数中:
$data["content"]["something"] = "bla bla";
在Controller的方法中:
$data['something'] = $this->$data["content"]["something"];
现在,您可以通过$data
查看和访问echo $something
;
答案 1 :(得分:0)
好像你没有理解这个问题的变量范围。而不是创建局部变量$ data尝试使用$ this->数据,这些数据将可用于整个对象(控制器)
function __construct() {
...
$this->data['content'] = array('test' => 'test');
...
}
您也可以使用变量$ this->数据将其传递给视图,并在执行期间随时添加/修改它。
$this->load->view('path/to/view', $this->data);
答案 2 :(得分:0)
echo $content["something"];
在视图中像这样检索它
public class CallingActivity extends AppCompatActivity {
Button registeraccount;
Bundle extras;
String opponentid;
public static final String sipdomen= "sip2sip.info";
String myid;
Button call;
SipManager mSipManager;
SipProfile myprofile;
SipProfile opponentprofile;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_calling);
call = (Button)findViewById(R.id.button5);
registeraccount = (Button)findViewById(R.id.button4);
extras = getIntent().getExtras();
if(extras!=null){
opponentid = extras.getString("opponentid");
myid = extras.getString("myid");
}
registeraccount.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mSipManager = SipManager.newInstance(CallingActivity.this);
SipProfile.Builder builder = null;
try {
builder = new SipProfile.Builder(myid, sipdomen);
builder.setPassword("000000");
myprofile = builder.build();
Intent intent = new Intent();
intent.setAction("android.SipDemo.INCOMING_CALL");
PendingIntent pendingIntent = PendingIntent.getBroadcast(CallingActivity.this, 0, intent, Intent.FILL_IN_DATA);
mSipManager.open(myprofile, pendingIntent, null);
try {
mSipManager.setRegistrationListener(myprofile.getUriString(), new SipRegistrationListener() {
@Override
public void onRegistering(String localProfileUri) {
Log.d("safhaskjfa","registering");
}
@Override
public void onRegistrationDone(String localProfileUri, long expiryTime) {
Log.d("safhaskjfa","Registration succesfull"+localProfileUri+"");
}
@Override
public void onRegistrationFailed(String localProfileUri, int errorCode, String errorMessage) {
Log.d("safhaskjfa","failed to register"+localProfileUri+"the error code is"+errorCode+"the error message is"+errorMessage);
}
});
} catch (SipException e) {
e.printStackTrace();
}
} catch (ParseException e) {
e.printStackTrace();
} catch (SipException e) {
e.printStackTrace();
}
}
});
call.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
mSipManager.makeAudioCall(myprofile,opponentprofile, new SipAudioCall.Listener(),100000);
} catch (SipException e) {
e.printStackTrace();
}
}
});
}
}
答案 3 :(得分:-1)
你必须这样做:
$data["content"] = "bla bla";
$data["something"] = "bla bla";
$this->load->view('path/to/view', $data);
通过这种方式,您可以在视图中获得所有数据字符串。
<?php echo $something; ?>
<?php echo $content; ?>
在一个$ data字符串中传递2个变量不是一个好主意。