我是PHP和Laravel的新手。我使用的是Laravel框架5.3版。29和7
我正在制作包含两部分的扩展登记表。制作登录凭证的登记表;用户名和密码,在创建登录凭据之后,第二部分是为新用户创建配置文件。
过程:注册表单,保存数据到用户表,使用用户模型。成功创建用户名后
配置文件窗体正在使用配置文件模型。
1) 当数据已通过post方法发送且没有错误消息时,如何进行故障排除。只有在按下提交按钮后,它才会返回到配置文件表单。
2) 我可以看到没有数据保存到配置文件表。
寄存器(用户表)和配置文件表位于同一数据库中,因为寄存器表单可以保存它,数据库部分工作正常。
代码骨架已经从"php工匠make: auth完整的代码可以找到https://github.com/mikromika/project1/
我的路由文件如下:
// Registration Routes
Route::get('auth/register', 'Auth\RegisterController@getRegister');
Route::post('auth/register', 'Auth\RegisterController@register');
// Show profile form
Route::get('bio/create', ['as' => 'bio.create', 'uses' => 'Bio\ProfileController@create']);
Route::post('bio/store', ['as' => 'bio.store', 'uses' => 'Bio\ProfileController@store']);
ProfileController:存储此数据应验证数据并将其保存到profile表中
public function store(Request $request)
{ $this->validator($request->all())->validate();
$this->guard()->login($this->createx($request->all()));
Session::flash('success', 'Data was successfully save!');
if ($exception instanceof TokenMismatchException) {
Session::flash('success', 'Data was failed to save!');
return redirect('/auth/login');
}
// show profile form info after success post; does not work yet
return redirect()->route('bio.show'); }
下面是一个发送post方法的配置文件表单。
<form id="profile-form" action="{{ url('/bio/store') }}" method="POST" form class="form-horizontal">
{{ csrf_field() }}
Post方法永远不会到达ProfileController: store部分。
我尝试过使用“GET”方法,但我遇到了错误
MethodNotAllowedHttpException in RouteCollection.php line 218:
我已经改变了路线
Route::get('bio/store', ['as' => 'bio.store', 'uses' => 'Bio\ProfileController@store']);
和表单<代码>
因为表单需要通过“POST”方法发送,所以我理解这个错误!。
这里是ProfileController的验证部分:验证器
protected function validator(array $data) // copied from register controller
{
return Validator::make($data, [
'firstname' => 'required|max:255',
'lastname ' => 'required|max:255',
'email' => 'required|email|max:255|unique',
'phone' => 'integer',
'mobile' => 'integer',
]);
}
这是ProfileController:createx part我从registerController获取的。
protected function createx(array $data) //copied from register controller
{ // was dublicate name "create"
return Profile::createx([ // changed to "createx"
'firstname' => $data['firstname'],
'lastname' => $data['lastname'],
]);
}
这是剖面模型
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Profile extends Model
{
//
protected $table = 'profiles';
protected $fillable = [
'firstname',
'lastname',
'email',
'phone',
'mobile',
// 'name', 'email', 'password',
];
protected $hidden = [
'status',
//'location',
];
}
感谢Alexey Mezenin DD()提供的疑难解答提示
@MikroMika此数据表明您没有传递firstname和lastname。查看dd(数据)的结果;它应该类似于['firstname'=
现在我又回到了起点,
为什么表单不是通过POST方法传递数据?
Eloquent中没有createx()
方法。您在控制器中定义了它,但尝试将其用于模型。使用create()
方法:
return Profile::create([
'firstname' => $data['firstname'],
'lastname' => $data['lastname'],
]);
此外,您还询问了如何进行故障排除。安装Laravel调试条。另外,使用dd()
helper确实很有帮助:
dd(Profile::create([
'firstname' => $data['firstname'],
'lastname' => $data['lastname'],
]));
问题内容: 我有两个网站,一个是TLS,一个不是,这两个都是针对同一客户端的,但是我需要这些网站彼此(并且只能彼此)共享 用户 , 订单 , 帐户 等的通用数据。 通常可以使用数据完成此操作,但是我显然不能在其他站点上使用它们,而且我发现我可以将会话数据存储在数据库(MySQL)中,而不是文件系统中。 我已经四处搜寻,发现此有用的指南以及此较旧但 有用的指南。我还发现了该指南,该指南具有最新的My
我收到的流数据()希望保存在S3中(基本上,对于这个问题,我希望将输出保存在哪里并不重要,但我只是为了以防万一而提到它)。 是否可以将每个(这些是JSON字符串)数据保存到JSON文件中,而不是文件夹中?我以为必须使用这个技巧,但它没有。
我试图用json作为主体数据在jmeter中发布帖子,但我只得到了400。我发送到的URL只接受json。我在《邮差》中也用过同样的卷发,效果很好。我曾尝试将json作为一个没有名称的值放入参数中,但没有成功。 我只是想发送{“uid”:“jmtest”,“name”:“newdevice”}。 对不起,我不能发布更多的链接。 采样结果为 请求看起来像 响应数据为
我正试图从解析通过模拟器中提取一个PDF文件,并保存到我的桌面上,当我的应用程序上的一个按钮被点击时。问题是,无论我做什么,文件不会出现在桌面或其他任何地方。我正在对下载按钮使用此方法 无法将其保存到桌面。
问题内容: 我的entityManagerpersist()从序列中获取ID,并将其放入我的Image对象,但是Image对象本身未显示在数据库中。EntityManager.flush()给出错误,所以我不能以这种方式提交。这是我的代码。 问题答案: 这通常在未应用Transaction in时发生。我怀疑@Transactional拦截器没有正确拦截。
问题内容: 尝试发送json。这是我的功能: 但是,每当我检查Chrome时,它总是将其作为查询参数发送: 如何获取以JSON格式发送的信息? 问题答案: 用 样品: 注意并非所有浏览器(http://caniuse.com/#feat=json)都支持JSON.stringify ,特别是IE7及更低版本的浏览器。 如果您也需要支持此浏览器,则可以使用以下Javascript库:https :