更新后刷新Auth用户数据

时间:2015-05-05 17:23:01

标签: php cakephp-3.0

我正在使用public class MenuConcerts extends Fragment { ArrayList<Concert> arrayConcert = new ArrayList<Concert>(); @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.concerts_layout, container, false); ((MainActivity) getActivity()).setActionBarTitle(getString(R.string.title_spelningar)); // all the reading file logic here; ListAdapter listAdapter = new CustomerAdapter(getActivity(), arrayConcert); return view; } } 在标题中显示已登录用户的名称。

问题是,当我更新用户名时,如何在$this->Auth->user('name')刷新此值,因为在我刚刚更新了旧名称之后呢?

2 个答案:

答案 0 :(得分:0)

除非您使用无状态身份验证,否则会从会话中存储和检索数据,因此您只需要在那里进行更新。

例如

$this->Auth->session->write($this->Auth->sessionKey . '.name', $newName);

或者可以在适用的情况下设置完整的修改后的用户数据(请注意,这将更新会话)

$this->Auth->setUser($updatedUserData);

另请参阅 API > Controller > Component > AuthComponent::_setUser()

答案 1 :(得分:0)

在Appcontroller中

 public function initialize()
{
    ...
    $tableUser=TableRegistry::get("Users");
    $user=$tableUser->get($this->Auth->user('id'));

    $this->set(compact('user','...'));

...

在视图中只需使用$ user [&#39; name&#39;]即可获得该名称。用户的任何更新都会影响到$ user。使用array $ user更新用户后,您可以获取任何字段。 我坚持你的情况,但很久以前我找到了解决方案。希望这项工作。如果它不起作用,请告诉我。我在记忆中写出来,这可能是错误的功能