Php 如何获取非对象的属性?
我的推荐系统工作得很好,但我想把推荐的名称、用户名或电子邮件地址放在html Ex:{$username}页面中。在我的控制器上,我的重定向当前正在工作,但是如果我放置{$username},它将返回未定义的变量,但是如果我将其更改为查看{$username},它将工作,但是注册是在默认情况下使用admin完成的 我的控制器:Php 如何获取非对象的属性?,php,html,laravel,Php,Html,Laravel,我的推荐系统工作得很好,但我想把推荐的名称、用户名或电子邮件地址放在html Ex:{$username}页面中。在我的控制器上,我的重定向当前正在工作,但是如果我放置{$username},它将返回未定义的变量,但是如果我将其更改为查看{$username},它将工作,但是注册是在默认情况下使用admin完成的 我的控制器: <?php namespace App\Http\Controllers; use App\User; use Illuminate\Http\Reque
<?php
namespace App\Http\Controllers;
use App\User;
use Illuminate\Http\Request;
class RefController extends Controller
{
public function index( $username )
{
$user = User::where( 'username', $username )->first();
return ( is_null( $user ) )
? redirect( '/' )
: redirect( '/register' )->withCookie( cookie()->forever( 'referrer_id', $user->id ) );
}
}
protected function create(array $data) {
if($data['gender']=='male'){
$avatar_path = 'boy.png';
}
else
{
$avatar_path = 'girl.png';
}
$referrer = User::find( Cookie::get( 'referrer_id' ) );
return User::create([
'name' => $data['name'],
'username' => $data['username'],
'avatar' => $avatar_path,
'gender' => $data['gender'],
'email' => $data['email'],
'passaport' => $data['passaport'],
'country' => $data['country'],
'city' => $data['city'],
'state' => $data['state'],
'address' => $data['address'],
'postcode' => $data['postcode'],
'password' => Hash::make($data['password']),
'referrer_id' => (is_null($referrer )) ? 1 : $referrer->id,
]);
更新
我的注册表控制器:
<?php
namespace App\Http\Controllers;
use App\User;
use Illuminate\Http\Request;
class RefController extends Controller
{
public function index( $username )
{
$user = User::where( 'username', $username )->first();
return ( is_null( $user ) )
? redirect( '/' )
: redirect( '/register' )->withCookie( cookie()->forever( 'referrer_id', $user->id ) );
}
}
protected function create(array $data) {
if($data['gender']=='male'){
$avatar_path = 'boy.png';
}
else
{
$avatar_path = 'girl.png';
}
$referrer = User::find( Cookie::get( 'referrer_id' ) );
return User::create([
'name' => $data['name'],
'username' => $data['username'],
'avatar' => $avatar_path,
'gender' => $data['gender'],
'email' => $data['email'],
'passaport' => $data['passaport'],
'country' => $data['country'],
'city' => $data['city'],
'state' => $data['state'],
'address' => $data['address'],
'postcode' => $data['postcode'],
'password' => Hash::make($data['password']),
'referrer_id' => (is_null($referrer )) ? 1 : $referrer->id,
]);
更新
我的迁移将\u Ref\u添加到\u user\u表:
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AddReferrerToUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('users', function (Blueprint $table)
{
$table->integer('referrer_id')->unsigned()->default(1)->after('id');
$table->foreign('referrer_id')->references('id')->on('users');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('users', function (Blueprint $table)
{
$table->dropForeign(['referrer_id']);
$table->dropColumn( 'referrer_id' );
});
}
}
更新
我从@Caddy DZ将返回视图“auth.register”->更改为获得帮助和耐心
由于这是一个推荐系统,用户应该获得404,以便在url中插入不存在的推荐 使用firstor失败 公共函数索引$username { $user=user::其中'username',$username->firstOrFail; 返回视图'auth.register'->with[ “referer\u id”=>$user->id, 'username'=>$username ]; } 然后在视图中显示用户名,如下所示 {{$username} 假设数据库表中确实有一个名称列 架构::创建“用户”,函数蓝图$表{ $table->big增量'id'; $table->string'name';//必须有 $table->string'username'->unique;//必须具有此唯一性 $table->string'email'->唯一; $table->timestamp'email\u verified\u at'->可为空; $table->string'password'; $table->rememberToken; $table->timestamps; }; 使现代化 替换此代码 “referer\u id”=>是否为空$referer?1:$referer->id, 通过存储在Cookie中的实际整数 “referer\u id”=>$referer,
如果只有经过身份验证的用户才能访问此路由,请尝试向其添加身份验证中间件
Route::get('/user/{username}', 'RefController@index' )->middleware('auth');
尝试将控制器中的代码更改为以下内容:
return ( is_null( $user ) )
? redirect( '/' )
: view( 'auth.register', compact( 'referrer_id', 'user' ) );
在auth.register视图中,尝试获取{{$user->name}},而不是{{{{auth::user->name}。您不能在注册页面上显示经过身份验证的用户名,因为没有经过身份验证的用户{{{auth::user->name???}是的,我考虑过,但我不知道如何显示,但我需要这样做,这是用户注册的途径,想要显示招聘人员的姓名如果需要显示招聘人员的姓名-您可以在URI中传递招聘人员id,然后通过其id解析此招聘人员用户,然后您将能够显示其姓名。如果使用{{Auth::user->name},则您正试图获取向服务器发出请求的用户的用户名。是,我使用了为什么我的url是domain.com/user/jhonn。。。本页用于注册,我想在下方显示jhonnerror的名称使用未定义的常量用户-假定“用户”评论不用于扩展讨论;这段对话已经结束。
return ( is_null( $user ) )
? redirect( '/' )
: view( 'auth.register', compact( 'referrer_id', 'user' ) );