I have a website where you can create your own lists and on this lists you can create custom fields that will be on the subscribe form. When a subscriber fills out the form, he gets an email with the confirmation code.
{!! Form::open(array('route' => 'customFields.store')) !!}
<div class="row">
<div class="col-sm-3">
</div>
<div class="col-sm-4">
</div>
</div>
<div class="row">
<div class="col-sm-3">
</div>
<div class="col-sm-2">
</div>
</div>
<br>
{!! Form::close() !!}
Above is the form for inserting a custom field into the databse. Below you can see the customFields.store method in the controller.
$this->validate($request, array(
'field_name' => 'required',
'data_type' => 'required',
'subscriber_list_id' => 'required',
));
$customField = new customField;
$customField->field_name = $request->field_name;
$customField->data_type = $request->data_type;
$customField->subscriber_list_id = $request->subscriber_list_id;
$customField->save();
Session::flash('success', 'Custom field successfully created!');
return redirect()->route('customFields.index', $request->subscriber_list_id);
I created a route for a page where a person can fill out this form and gets subscribed to a list. Below is the code on the subscribe page. I get the custumField and subscriberListId values from the controller.
<form action="" method="POST">
<label for="name">Name</label>
<input type="text" name="name"><br>
<label for="email">Email</label>
<input type="email" name="email"><br>
@foreach($customFields as $customField)
<label for=""></label>
<input type="" name=""><br>
@endforeach
<input type="hidden" name="subscriber_list_id" value=""/>
<input type="submit" name="submit" value="Submit"/>
</form>
When I press submit I get redirected to sendSubscribeMail method, where I get an error saying:
"SQLSTATE[42S22]: Column not found: 1054 Unknown column 'custom_field_id' in 'field list' (SQL: insert into custom_field_subscriber
(custom_field_id
, subscriber_id
) values (1, 16)
Here is the code in my sendSubscribeMail method
$customFields = customField::where('subscriber_list_id', Input::get('subscriber_list_id'))->get();
$customFieldsArray = array();
foreach($customFields as $customField){
$customFieldsArray[$customField->field_name] = 'required';
}
$validator = array_merge($customFieldsArray, ['name' => 'required', 'email' => 'required', 'subscriber_list_id' => 'required']);
$this->validate($request, $validator);
$confirmation_code = str_random(36);
$subscriber = new Subscriber;
$subscriber->name = $request->name;
$subscriber->email = $request->email;
$subscriber->subscriber_list_id = $request->subscriber_list_id;
$subscriber->confirmation_code = $confirmation_code;
$subscriber->confirmed = false;
$subscriber->save();
foreach($customFields as $customField) {
$subscriber->customFields()->attach($customField->id);
}
\Mail::send('emails.vertify', ['confirmation_code' => $confirmation_code], function($message) {
$message->to(Input::get('email'));
$message->from('test@gmail.com', 'Test');
$message->subject('Verify your email address');
});
I have a table called subscribers which can have many customFields, and table customFields can have many subscribers. The problem is when I try to insert the value of a custom field and subscriber and list_id into the pivot table.
via Chebli Mohamed
Aucun commentaire:
Enregistrer un commentaire