Undefined variable when using array validation and variables.
Closed this issue · 2 comments
Hi !
I've an issue where the documentation cannot be generated, because variables aren't detected when the code is parsed, i've seen a PR #237 but i don't know if it's in progress or abandoned.
For this code for instance :
$customer = Customer::findOrFail($id),
$data = $request->validate([
'reference' => ['required', 'string', Rule::unique('orders')->where($customer->id, 'customer_id')]
...
I have this behavior :
Thanks for this project, it's really cool !
Yo @Bouhnosaure! It is indeed would be fixed in #237!
As a workaround you can inject a customer, if it is possible:
// routes/api.php
Route::update('customers/{customer}', [CustomerController::class, 'update']);
// app/Http/Controllers/CustomerController.php
class CustomerController
{
public function update(Request $request, Customer $customer)
{
$data = $request->validate([
'reference' => ['required', Rule::unique('orders')->where($customer->id, '...')]
]);
}
}
I get that this may be not possible for you, but in case it is injected, Scramble should not fail.
Thanks for you answer, but i use a macro for it which is retrieved from the request first, because i have some data retrieved from a middleware.
Now that you've exposed your example, as a workaround i'll use the $request variable directly without assignation to a variable first.
And indeed it's working with $request->customer()?->id
but need to use the null safe operator, otherwise i have an undefined property 'id')