fix: PHP Fatal Error and attribute input UX
Critical Fixes: 1. ✅ PHP Fatal Error - FIXED Problem: call_user_func() error - Permissions::check_admin does not exist Cause: Method name mismatch in ProductsController.php Solution: Changed all 8 occurrences from: 'permission_callback' => [Permissions::class, 'check_admin'] To: 'permission_callback' => [Permissions::class, 'check_admin_permission'] Affected routes: - GET /products - GET /products/:id - POST /products - PUT /products/:id - DELETE /products/:id - GET /products/categories - GET /products/tags - GET /products/attributes 2. ✅ Attribute Options Input - FIXED Problem: Cannot type anything after first word (cursor jumps) Cause: Controlled input with immediate state update on onChange Solution: Changed to uncontrolled input with onBlur Changes: - value → defaultValue (uncontrolled) - onChange → onBlur (update on blur) - Added key prop for proper re-rendering - Added onKeyDown for Enter key support - Updated help text: "press Enter or click away" Now you can: ✅ Type: Red, Blue, Green (naturally!) ✅ Type: Red | Blue | Green (pipe works too!) ✅ Press Enter to save ✅ Click away to save ✅ No cursor jumping! Result: - Products index page loads without PHP error - Attribute options input works naturally - Both comma and pipe separators supported
This commit is contained in:
@@ -28,56 +28,56 @@ class ProductsController {
|
||||
register_rest_route('woonoow/v1', '/products', [
|
||||
'methods' => 'GET',
|
||||
'callback' => [__CLASS__, 'get_products'],
|
||||
'permission_callback' => [Permissions::class, 'check_admin'],
|
||||
'permission_callback' => [Permissions::class, 'check_admin_permission'],
|
||||
]);
|
||||
|
||||
// Get single product
|
||||
register_rest_route('woonoow/v1', '/products/(?P<id>\d+)', [
|
||||
'methods' => 'GET',
|
||||
'callback' => [__CLASS__, 'get_product'],
|
||||
'permission_callback' => [Permissions::class, 'check_admin'],
|
||||
'permission_callback' => [Permissions::class, 'check_admin_permission'],
|
||||
]);
|
||||
|
||||
// Create product
|
||||
register_rest_route('woonoow/v1', '/products', [
|
||||
'methods' => 'POST',
|
||||
'callback' => [__CLASS__, 'create_product'],
|
||||
'permission_callback' => [Permissions::class, 'check_admin'],
|
||||
'permission_callback' => [Permissions::class, 'check_admin_permission'],
|
||||
]);
|
||||
|
||||
// Update product
|
||||
register_rest_route('woonoow/v1', '/products/(?P<id>\d+)', [
|
||||
'methods' => 'PUT',
|
||||
'callback' => [__CLASS__, 'update_product'],
|
||||
'permission_callback' => [Permissions::class, 'check_admin'],
|
||||
'permission_callback' => [Permissions::class, 'check_admin_permission'],
|
||||
]);
|
||||
|
||||
// Delete product
|
||||
register_rest_route('woonoow/v1', '/products/(?P<id>\d+)', [
|
||||
'methods' => 'DELETE',
|
||||
'callback' => [__CLASS__, 'delete_product'],
|
||||
'permission_callback' => [Permissions::class, 'check_admin'],
|
||||
'permission_callback' => [Permissions::class, 'check_admin_permission'],
|
||||
]);
|
||||
|
||||
// Get product categories
|
||||
register_rest_route('woonoow/v1', '/products/categories', [
|
||||
'methods' => 'GET',
|
||||
'callback' => [__CLASS__, 'get_categories'],
|
||||
'permission_callback' => [Permissions::class, 'check_admin'],
|
||||
'permission_callback' => [Permissions::class, 'check_admin_permission'],
|
||||
]);
|
||||
|
||||
// Get product tags
|
||||
register_rest_route('woonoow/v1', '/products/tags', [
|
||||
'methods' => 'GET',
|
||||
'callback' => [__CLASS__, 'get_tags'],
|
||||
'permission_callback' => [Permissions::class, 'check_admin'],
|
||||
'permission_callback' => [Permissions::class, 'check_admin_permission'],
|
||||
]);
|
||||
|
||||
// Get product attributes
|
||||
register_rest_route('woonoow/v1', '/products/attributes', [
|
||||
'methods' => 'GET',
|
||||
'callback' => [__CLASS__, 'get_attributes'],
|
||||
'permission_callback' => [Permissions::class, 'check_admin'],
|
||||
'permission_callback' => [Permissions::class, 'check_admin_permission'],
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user