0

So this is my php function. First I get the variable

    $this->sphotoRepository->save($command->sphoto, $status->id, $command->label, $command->sphoto_categories, $command->sphoto_tagged_users, $command->u18);

Which passes to the final function

public function save(UploadedFile $file = null, $statusId, $label, $sphoto_categories, $sphoto_tagged_users, $u18)
....
if (isset($sphoto_categories) && !empty($sphoto_categories)) {
            foreach ($sphoto_categories as $sphoto_category_id)
            {
                $category = StatusPhotoCategory::findOrFail($sphoto_category_id);
                $sphoto->categories()->attach($category->id);
            }
        }

And here is how I pass my data

post.sphoto_categories = Array("2");

What I would expect as a result (Postman form submit does confirm it. But I am using sphoto_categories[] ... in there to create the array. Can't do that in JS)

'sphoto_categories' => 
 array (
    0 => '2',
  )

What I get when form submit via js

'sphoto_categories' => '["3"]'
1
  • 2
    And the question is? Commented Apr 28, 2015 at 9:38

1 Answer 1

1

What you receive is JSON representation of Array. You need to do json_decode() to get array which you expect.

So add the following lines to the code. Do the validation that variable is decoded correctly. json_decode returns null if JSON is not well formatted. You can check the value of json_last_error() to get idea what went wrongly.

$categoriesArray = json_decode($command->sphoto_categories);
// Validation.
$this->sphotoRepository->save($command->sphoto, $status->id, $command->label, $categoriesArray, $command->sphoto_tagged_users, $command->u18);
Sign up to request clarification or add additional context in comments.

3 Comments

Working so far, but how to catch exception? Because it seems like i cannot catch it with try/catch
There is no exception. You need to check the following null === $categoriesArray and handle the error in this case.
Im checking is_string($sphoto_categories) and then decode it. Otherwise i get json_decode() expects parameter 1 to be string, array given (In postman of corse, other problem is solved for me)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.